番茄boy
2020-11-13 15:14

正如上图所示,是个让表格每行鼠标移上去就变色的代码,在图片红色框框处,是能运行正常的,但一旦改成obj[i]就无法运行了,是怎么回事?
obj[i]在匿名函数没有定义
function bgc(obj){
for(var i=0; i<obj.length;i++)
{
obj[i].onmouseover=(function(obj){
// this.style.backgroundColor='#f2f2f2';
return function(){
obj.style.backgroundColor='#f2f2f2';
}
})(obj[i]);
obj[i].onmouseout=(function(obj){
return function(){
obj.style.backgroundColor='#fff';
}
})(obj[i]);
}
}
闭包只能取得包含函数中任何变量的最后一个值,楼主写的代码中包含函数只能取得obj[i]的最后一个值
obj[i].style.backgroundColor这时的i已经不是当初的i,你做一个中间值传给它看看
你别学了 送外卖去吧.. 工资高一点
JavaScript进阶篇
469071 学习 · 22582 问题
相似问题