问答详情
源自:4-1 JS多物体动画

为什么arr[i].style.width=300+"px";中浏览器会Uncaught TypeError: Cannot read property 'style' of undefined

var arr=document.getElementsByTagName("li");

for(var i=0;i<arr.length;i++){

arr[i].onclick=function(){

setInterval(function(){

arr[i].style.width=300+"px";

},300);

}

}


提问者:东边天上的云 2015-07-07 12:50

个回答

  • 东边天上的云
    2015-07-07 22:55:15

    http://bbs.csdn.net/topics/340176862

  • menghuanbaolei
    2015-07-07 16:24:55

    试一下这个

  • menghuanbaolei
    2015-07-07 16:24:29


    var arr=document.getElementsByTagName("li");
    for(var i=0;i<arr.length;i++){
        arr[i].id = i;
        arr[i].onclick=function(){
        setInterval(function(){
        arr[this.id].style.width=300+"px";
    },300);
    }
    }


  • arlenhui
    2015-07-07 14:56:15

    因为i此时是arr.length,这里是闭包的问题。

    var arr=document.getElementsByTagName("li");
    for(var i=0;i<arr.length;i++){
    arr[i].onclick=function(a){
    setInterval(function(){
    arr[a].style.width=300+"px";
    },300);
    }(i);
    }