var timer=setInterval(function(){
......
}
}, 10)
$('li').hover(function() {
clearInterval(timer);},
function() {
//我知道这边是因为又重新创建了一个timer的定时器,才造成叠加效果
//为什么clearInterval(timer)清除不了,问了别人是因为清除的是第一个timer
//为什么?重新定义的定时器也叫timer了,timer不是被重新赋值了,为什么清除不了
//还有一个问题为什么定时器叠加了,速度会加快,可以说得详细点?
var timer=setInterval(function(){
......
}
}, 10)
});
底下那个 var timer 去点 var 试试,
用了这个 var 是重新声明了一个局部变量,不是覆盖上一个
我明白了,还有一个问题叠加的:我上网搜的解答:其实很好理解,你点击一次按钮,相当于叫一个人过去,每隔300毫秒把div移动一下;你点两次,就相当于让两个人去干同样的事情,都是每隔300毫秒移动一次div,但是,假设过了300毫秒,第一个人过去移动了div,第二个人也会过去移动div,就相当于每隔300毫秒移动两倍原来的距离 问题是: 为什么是相当于每隔300毫秒移动原来的两倍距离,定时器不是还有个时间,第一个定时器执行时间每隔300毫秒,在300毫秒没有执行完的时候再执行另一个每隔300毫秒移动的定时器,他们说是叠加了,但是时间是怎么处理的?有人说是时间差,那时间差又是怎么理解的?
@oneStep12: 额。没懂你的描述
@电磁魔王喵喵: 那你可以给我解释一下定时器叠加产生的速度加快?
@oneStep12: 如果有两个定时器同时在执行的话,,他们不会互相影响的,每隔300毫秒指得是从他们自己声明开始过300毫秒,真实时间如果过了 300 毫秒,那么这两个都到了该执行任务时候,基本会在同一时刻操作这个div,相当于这一时刻移动了两次,
@电磁魔王喵喵: 我明白了,真是太感谢,之前我就在纠结时间..... 谢谢
@电磁魔王喵喵: 那个真实时间是??
@oneStep12: 是我的描述有问题,,就是计算机时间
@电磁魔王喵喵: 好