onclick у генерируемых элементов
Возникла проблема.
Есть набор из определенного количества div-ов, при клике на каждый из которых происходит какое-либо событие. Делаю так:
function loading() {
object = document.getElementById('miniForm');
for ( var i=0; i<object.childNodes.length; i++ ) {
object.childNodes[i].onclick = function() {
alert(i);
}
}
}
<body onload="loading();"> <div id="miniForm"><div>a1</div><div>a2</div><div>a3</div><div>a4</div><div>a5</div><div>a6</div><div>a7</div><div>a8</div></div> </body> Проблема в том, что при клике на div алерт всегда пишет "8". Подскажите, пожалуйста, как это можно исправить. |
function loading() {
object = document.getElementById('miniForm');
var set = function(o,x){
o.onclick = function() {alert(x)}
}
for ( var i=0; i<object.childNodes.length; i++ )
set(object.childNodes[i],i);
}
|
Спасибо большое, работает. :)
|
пожалуйста :)
|
Столкнулся с такой же проблемой. Не подскажете, почему первоначальный вариант кода выдаёт такое поведение?
|
потому что i в конце имеет значение равное длине списка. А передаётся в функцию через жопу... Чтобы передать в нужном виде (по значению) Надо вынести функцию...
|
| Часовой пояс GMT +3, время: 13:18. |