Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   addEventListener и получение ID у вложенного элемента (https://javascript.ru/forum/dom-window/22103-addeventlistener-i-poluchenie-id-u-vlozhennogo-ehlementa.html)

Shockk 06.10.2011 15:02

addEventListener и получение ID у вложенного элемента
 
Всем привет!

Подскажите, есть след.html код:
<div id="aaa">
<img src="1.jpg" id="1"/>
<img src="2.jpg" id="2"/>
<img src="3.jpg" id="3"/>
</div>


Есть обработчик клика:
var el = document.getElementById("aaa")
el1.addEventListener("click", getId, false)


В результате у меня на экране есть 2 картинки, нажимая на каждую из них, вызывается div обработчик. Как мне в этом обработчике получить ID картинки ???

Или есть более правильный вариант установки обработчика клика ???

dmitriymar 06.10.2011 15:09

function getId(event)
 {
  event = event || window.event;
  var t = event.target || event.srcElement;
  alert(t.id);
 }

Shockk 06.10.2011 15:41

dmitriymar, спасибо за ответ.

Мне тут предложили еще один вариант:

var el = document.getElementById("aaa")
var obj = el.getElementsByTagName("img")
for ( var i=0; i<obj.length; i++ ){
      obj[i].addEventListener("click", getId, false)
}


Какой из вариантов лучше использовать, если картинок будет около сотни?

ksa 06.10.2011 15:55

Цитата:

Сообщение от Shockk
Какой из вариантов лучше использовать, если картинок будет около сотни?

Ответ очевиден. :) Тот, где меньше кода и циклов...

dmitriymar 06.10.2011 15:56

в любом случае нужно получить доступ к элементу в каком произошло событие. код функции обработчика от этого не меняется.в первом варианте ещё остановить всплытие,но это 2 строки против сотни обработчиков. а "память браузера" не резиновая

Shockk 06.10.2011 16:30

Понял, спасибо !!!


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