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循环的时候报错。循环方式如下: var tr = document.getElementsByTagName('tr');
for(var i=0;i<tr.length;i++){
tr[i].onmouseover = function(){
tr[i].style.backgroundColor = '#ccc';
}
}求指点
4 回答
qq_安伊偌拉_0
TA贡献27条经验 获得超2个赞
这段代码是先执行循环,然后给每个tr添加一个onmouseover事件,但是事件里面的内容还读取不到。等循环完之后,这时i==4,然后你把鼠标挪进去,执行 tr[i].style.backgroundColor = '#ccc'; tr[4]为空,所以报错。
冯春龙
TA贡献2条经验 获得超0个赞
stackoverflow 上有人回答,贴出来。
var tr = document.getElementsByTagName('tr'); for(var i=0;i<tr.length;i++){ tr[i].onmouseover = function(){ //tr[i].style.backgroundColor = '#ccc'; 更改为下一句 this.style.backgroundColor = '#ccc'; } }
为什么使用this 还不是很清楚,在学习中。
添加回答
举报
0/150
提交
取消