Вход

Просмотр полной версии : Добавление события нескольким элементам


BorodinKO
23.10.2012, 20:42
Задача обратится к элементу id="1x1", 1x2, 1x3, 2x1, 2x2 .. и т.д.
и прописать на них действия, как настоящий ламер я попробовал написать в цикле

...{{
document.getElementById(j+"x"+i).onclick = function(){alert(j+" "+i)}
}}

Нечего не получилось и я стал гуглить
нашел вот эту статью http://javascript.ru/forum/events/11229-dobavlenie-sobytiya-neskolkim-ehlementam.html

и по аналогии сделал так:


<div id="stage">
</div>
<script>
var stage = document.getElementById('stage');
W = 3;

for(i=1;i<=W;i++){
for(j=1;j<=W;j++){
stage.innerHTML+='<div id="'+j+"x"+i+'">'+j+' '+i+'</div>';
document.getElementById(j+"x"+i).onclick = function(j,i){ return function(){ alert(j+" "+i) } }(j,i)
}
}
</script>

но в итоге у меня ни чего не работает,
а вот со вариантом a1, a2, a3 у меня все норм

a_l
23.10.2012, 21:38
Меняя innerHTML вы уничтожаете дочерние элементы, вместе с этим уничтожаются и события на них повешенные. Поэтому событие остаётся только на последнем элементе.
Так что добавляйте события после того, как закончили менять содержимое с помощью innerHTML, например сделав ещё один цикл для этого.