Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   onclick у генерируемых элементов (https://javascript.ru/forum/misc/1483-onclick-u-generiruemykh-ehlementov.html)

Andius 28.07.2008 14:58

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".
Подскажите, пожалуйста, как это можно исправить.

ZoNT 28.07.2008 15:06

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);
}

Andius 28.07.2008 15:25

Спасибо большое, работает. :)

ZoNT 28.07.2008 15:39

пожалуйста :)

install 18.09.2008 13:05

Столкнулся с такой же проблемой. Не подскажете, почему первоначальный вариант кода выдаёт такое поведение?

ZoNT 18.09.2008 13:10

потому что i в конце имеет значение равное длине списка. А передаётся в функцию через жопу... Чтобы передать в нужном виде (по значению) Надо вынести функцию...


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