为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

正在回答

7 回答

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

0 回复 有任何疑惑可以回复我~

首先  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)

}


  


0 回复 有任何疑惑可以回复我~

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

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信