番茄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进阶篇
468060 学习 · 21891 问题
相似问题