Я уже знаю, как петля, благодаря замыканию, как это:Javascript укупорочные: Loop внутри петли
for (var i = first; i <= last; i++) {
document.getElementById(more + i).onmouseover = (function(arg1) {
return function() {
document.getElementById(arg1).style.display = "block";
}
})(i);
}
Но я хотел бы сейчас, чтобы сделать внешний вид внутри цикла. У меня есть элементы DOM, которые должны быть динамически привязаны к другим элементам. Элементы имеют тип: '1text1', '1text2', '1text3',...
и '2text1', '2text2', '2text3', '3text4'...
Я пытался что-то вроде этого:
var text;
var ktext;
for (var k = 1; k <= last_number; k++) {
for (var i = first; i <= last; i++) {
ktext = k + text;
document.getElementById(ktext + i).onmouseover = (function(arg1, arg2) {
return function() {
document.getElementById(arg1 + arg2).style.display = "block";
}
})(ktext, i);
}
}
Но петля частично теряется. Если я положил alert(ktext + i)
только в начале цикла var i
, я вижу: 1text1, 1text2, 1text3, 1text4
, затем(как ожидалось), но не 2text2, 2text3...
, как если бы второй проход цикла var k
останавливался слишком рано.
Вы привязываете обработчики событий в цикле? Вы рассматривали делегирование событий? –
Вы используете переменную 'text' перед ее инициализацией. – 0x499602D2