Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как узнать положение элемента (https://javascript.ru/forum/dom-window/24174-kak-uznat-polozhenie-ehlementa.html)

Aetae 20.12.2011 17:15

Красивее так:
<!DOCTYPE HTML>
<html>
<body>
  <ul>
    <li>select *</li>
    <li>select *</li>
    <li>select *</li>
    <li>select *</li>
    <li>select *</li>
  </ul>
</body>
<script type="text/javascript">
(function(){
  var ul=document.getElementsByTagName('ul')[0],
      li=ul.getElementsByTagName('li');
  ul.onclick=function(e) {
    var t = e.target || event.srcElement,i=li.length;
    while(i--&&li[i]!==t);
    alert(i)
  }
})()
</script>
</html>


...
functon(event){
var el = event.target || event.srcElement;
...

опасно так делать, опасно.

ksa 20.12.2011 20:19

Цитата:

Сообщение от nerv_
Почему-то эта запись
var elUl = elLi.parentNode.childNodes;

в FF помимо Li влючала еще элементы (всего 11 для списка из 5).

Наверное это текстовыеноды...

nerv_ 20.12.2011 20:43

Aetae, в IE8 не работает. Ругается на эту строчку
var t = e.target || event.srcElement;
// 'target' -  есть null или не является объектом

Цитата:

Сообщение от Aetae
опасно так делать, опасно.

Можно узнать почему?


ksa, да, они текстовые Еноты :D

рони 20.12.2011 20:50

Вариант на jQuery ...
Узнать порядковый номер элемента

melky 20.12.2011 21:40

Цитата:

Сообщение от Aetae (Сообщение 144777)
...
functon(event){
var el = event.target || event.srcElement;
...

опасно так делать, опасно.

(function(){
  var ul=document.getElementsByTagName('ul')[0],
      li=ul.getElementsByTagName('li');
  ul.onclick=function(e) {
    var t = *!*e.target*/!* || event.srcElement,i=li.length;
    while(i--&&li[i]!==t);
    alert(i)
  }
})()

так тоже опасно. в ie e будет undefined и обращение к target вызовет ошибку.

Aetae 20.12.2011 22:49

Самдурак, вас поругал, а сам скопипэйстил.))
На самом деле там должно быть:
var t = e?e.target:window.event.srcElement
Всю жисть так делал а тут прошляпил. Наглядный пример вреда копипэйста.)


Часовой пояс GMT +3, время: 03:45.