Laurel22
2015-07-22 10:23
为什么我的代码中的 aLi[i].timer = null;
在控制台会出现错误!TypeError: aLi[i] is undefined
粗略的看了下你的定时器声明是在局部,不是全局声明,意思就是,你的xx[i].timer=null;是在onmouseover里声明的,作用域问题
首先 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)
}
首先你得看看上面你的选择器 aLi是否正确,这里表示aLi都是undefined。alert出来看看
其次,问问题的时候建议把代码段贴出来,这样人家看了代码就能很好的找到错误点。
JS动画效果
113925 学习 · 1443 问题
相似问题