问答详情
源自:9-22 编程练习

函数内嵌函数需要this才能运行的问题,求指教?

http://img1.mukewang.com/5fae32010001a5c707210574.jpg

正如上图所示,是个让表格每行鼠标移上去就变色的代码,在图片红色框框处,是能运行正常的,但一旦改成obj[i]就无法运行了,是怎么回事?

提问者:番茄boy 2020-11-13 15:14

个回答

  • 沐沐3381925
    2020-12-03 13:06:51
    已采纳

    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]);     	
              }     
          }


  • 精慕门5098903
    2020-12-24 13:56:32

    闭包只能取得包含函数中任何变量的最后一个值,楼主写的代码中包含函数只能取得obj[i]的最后一个值

  • 沐沐3381925
    2020-12-03 03:32:39

    obj[i].style.backgroundColor这时的i已经不是当初的i,你做一个中间值传给它看看


  • 阳火锅
    2020-11-17 11:24:11

    你别学了  送外卖去吧.. 工资高一点