为什么我的代码中的 aLi[i].timer = null; 出错 为什么我的代码中的 aLi[i].timer = null; 出错 为什么我的代码中的 aLi[i].timer = null; 出错

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

Laurel22

2015-07-22 10:23

为什么我的代码中的  aLi[i].timer = null;  

在控制台会出现错误!TypeError: aLi[i] is undefined

写回答 关注

3回答

  • qq_未来想象之中_0
    2015-08-10 00:05:09

    粗略的看了下你的定时器声明是在局部,不是全局声明,意思就是,你的xx[i].timer=null;是在onmouseover里声明的,作用域问题

  • Laurel22
    2015-07-22 13:40:49

    首先  alert(aLi[i]); 后是正确的,表示为object HTMLElement.

    其次,我的代码是和视频基本一样的

    window.onload = function(){

    var aLi = document.getElementsByTagName('li');

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

    alert(aLi[i]);

    aLi[i].onmouseover = function(){

    aLi[i].timer = null;

       //var timer = null;

    startMove(this,400);

    }

    aLi[i].onmouseout = function(){

    startMove(this,200);

    }

    }

    }

    //var timer = null; //定义定时器,定时器是公用的

    function startMove(obj,target){

    clearInterval(obj.timer); //取消定时器

    obj.timer = setInterval(function(){

    var speed = (target - obj.offsetWidth)/8;

    speed = speed>0?Math.ceil(speed):Math.floor(speed);

    if(obj.offsetWidth == target){

    clearInterval(obj.timer);

    }else{

    obj.style.width = obj.offsetWidth + speed + 'px';

    }

    },30)

    }


      


  • kevinliang
    2015-07-22 10:44:05

    首先你得看看上面你的选择器 aLi是否正确,这里表示aLi都是undefined。alert出来看看

    其次,问问题的时候建议把代码段贴出来,这样人家看了代码就能很好的找到错误点。

JS动画效果

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

113925 学习 · 1443 问题

查看课程

相似问题