Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.07.2011, 10:33
Интересующийся
Отправить личное сообщение для awas Посмотреть профиль Найти все сообщения от awas
 
Регистрация: 02.05.2010
Сообщений: 15

Определение номера тега.
На странице есть текст, разбитый на какие то теги, например "P".
По клику на странице нужно определить номер тега, на котором был сделан последний клик.
Сейчас я эту задачу решаю так:

<body onClick="f_nomer()">

<p onClick="i=0">Это тег номер 0</p>
<p onClick="i=1">Это тег номер 1</p>
<p onClick="i=2">Это тег номер 2</p>
<p onClick="i=3">Это тег номер 3</p>
<p onClick="i=4">Это тег номер 4</p>

<script>
i=0
function f_nomer(){
alert(i)
}</script>


Или так:


<p onClick="f_nomer(this)" id="0">Это тег номер 0</p>
<p onClick="f_nomer(this)" id="1">Это тег номер 1</p>
<p onClick="f_nomer(this)" id="2">Это тег номер 2</p>
<p onClick="f_nomer(this)" id="3">Это тег номер 3</p>
<p onClick="f_nomer(this)" id="4">Это тег номер 4</p>

<script>
function f_nomer(x){
x=x.getAttribute("id")
alert(x)
}</script>


Но в любом случае приходится нумеровать теги.
Можно ли их не нумеровать, то есть получить решение этой задачи в каком то таком виде:


<p onClick="f_nomer(this)">Это тег номер 0</p>
<p onClick="f_nomer(this)">Это тег номер 1</p>
<p onClick="f_nomer(this)">Это тег номер 2</p>
<p onClick="f_nomer(this)">Это тег номер 3</p>
<p onClick="f_nomer(this)">Это тег номер 4</p>

<script>
function f_nomer(x){
x= . . .
alert(x)
}</script>

Может, в место тега "P" использовать теги с зарезервированным массивом номеров, (например тег "A").

Или от нумерации никуда не уйти?
Ответить с цитированием
  #2 (permalink)  
Старый 18.07.2011, 13:31
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,919

Сообщение от awas
Но в любом случае приходится нумеровать теги.
Можно ли их не нумеровать
Можно...

<!DOCTYPE html>
<html>
<head>
<style>
</style>
<script>
function Go(event) {
	var o=event||window.event
	o=o.target||o.srcElement
	var i=0
	var op=document.getElementsByTagName('p')
	while (op[i]) {
		if (op[i]==o) {
			alert('Клацнули на элементе № '+i)
			break
		}
		i++
	}
	
}
</script>
</head>
<body>
<body onclick="Go(event)">
<p>Это тег номер 0</p>
<p>Это тег номер 1</p>
<p>Это тег номер 2</p>
<p>Это тег номер 3</p>
<p>Это тег номер 4</p>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 18.07.2011, 13:39
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

можно не нумеровать

смотри. там всё медленно перекладывается, по переменным. что они содержат и для чего, говорят их имена.
<style>p {background-color:red;margin: 10px;}</style>
<p>Это тег номер 0</p>
<p>Это тег номер 1</p>
<p>Это тег номер 2</p>
<p>Это тег номер 3</p>
<p>Это тег номер 4</p>
<script>
document.onclick =  function(e){
         // на какой элемент клацнули
         var target = e ? e.target : event.srcElement;
         // дети родителя элемента, на который клацнули.
         var parentChildNodes = target.parentNode.children;
         // позиция элемента в списке детей
         var index = Array.prototype.indexOf.call( parentChildNodes, target );

         alert( index );
}
</script>


мм.. ksa, красиво

...
while (op[i]) {
....

Последний раз редактировалось melky, 18.07.2011 в 13:47.
Ответить с цитированием
  #4 (permalink)  
Старый 18.07.2011, 13:53
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,919

melky, это не моё... У тутошних ребят подсмотрел...
Ответить с цитированием
  #5 (permalink)  
Старый 18.07.2011, 14:46
Интересующийся
Отправить личное сообщение для awas Посмотреть профиль Найти все сообщения от awas
 
Регистрация: 02.05.2010
Сообщений: 15

Решение мне нужно было для эксплорера.

Вариант от ksa работает и в эксплорере и в опере.

Вариант от melky работает только в опере. В эксплорере пишет "Array.prototype.indexOf" есть ноль или не является объектом. Наверное у меня такая конструкция в эксплорер не была ещё установлена, эксплорер версии 6.0 (люблю эту версию).

Большое спасибо за помощь!
Ответить с цитированием
  #6 (permalink)  
Старый 18.07.2011, 14:59
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от awas
(люблю эту версию)
НЕНАВИСТЬ OVER 9999!!!!
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #7 (permalink)  
Старый 18.07.2011, 16:54
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от awas Посмотреть сообщение
Решение мне нужно было для эксплорера.
надо было про старика писать заранее...

конечно, мой код не совместим с ним.

только,если костыли в руки дать
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как с помощью javascript установить selected для тега option? re-kru-t Общие вопросы Javascript 1 19.02.2011 14:49
Помогите , пожалуйста, вытащить текст из тега liana1979 Общие вопросы Javascript 2 15.02.2011 13:55
Добавление к url сайта дополнительных слов и изменение тега Title Atlantweb Общие вопросы Javascript 7 14.01.2011 21:59
Checkbox, атрибут тега и кукис Pavov Общие вопросы Javascript 4 09.12.2010 15:52
Значение тега Input Zilog jQuery 4 12.07.2010 05:12