Определение номера тега.
На странице есть текст, разбитый на какие то теги, например "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"). Или от нумерации никуда не уйти? |
Цитата:
<!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> |
можно не нумеровать
смотри. там всё медленно перекладывается, по переменным. что они содержат и для чего, говорят их имена. <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, это не моё... :D У тутошних ребят подсмотрел...
|
Решение мне нужно было для эксплорера.
Вариант от ksa работает и в эксплорере и в опере. Вариант от melky работает только в опере. В эксплорере пишет "Array.prototype.indexOf" есть ноль или не является объектом. Наверное у меня такая конструкция в эксплорер не была ещё установлена, эксплорер версии 6.0 (люблю эту версию). Большое спасибо за помощь! |
Цитата:
|
Цитата:
конечно, мой код не совместим с ним. только,если костыли в руки дать |
Часовой пояс GMT +3, время: 20:36. |