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

来源:4-1 JS多物体动画

东边天上的云

2015-07-07 12:50

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

}

}


写回答 关注

4回答

  • 东边天上的云
    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);
    }


    arlenh... 回复东边天上的云

    a是传参,i是实参

    2015-07-08 10:13:01

    共 2 条回复 >

JS动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113925 学习 · 1443 问题

查看课程

相似问题