var tr = document.getElementsByTagName('tr');
tr[0].onmouseover = function(){
tr[0].style.backgroundColor = '#ccc';
}
tr[1].onmouseover = function(){
tr[1].style.backgroundColor = '#ccc';
}
tr[2].onmouseover = function(){
tr[2].style.backgroundColor = '#ccc';
}
Первое право, но когда я использую цикл for
, как в следующем фрагменте кода, я получаю «Uncaught TypeError: Cannot read property 'style' of undefined
».В чем разница между этими двумя утверждениями?
var tr = document.getElementsByTagName('tr');
for(var i=0;i<tr.length;i++){
tr[i].onmouseover = function(){
tr[i].style.backgroundColor = '#ccc';
}
}
Это было бы достаточно легко отладить. Поместите контрольную точку в свой отладчик в строке, где вы задаете цвет фона. Нажмите на первый 'tr'. Затем просмотрите значение 'i'. Это должно дать представление о проблеме. –
Подводя итог, вы не можете использовать 'i' после завершения цикла (например, внутри обратного вызова). Лучше иметь 'this' или' event' в обработчике, чтобы он мог самостоятельно искать свой элемент DOM. – Thilo