1 回答

TA貢獻(xiàn)9條經(jīng)驗(yàn) 獲得超1個(gè)贊
主要是這句的問題:?var time2=setTimeout(startscroll,2000);
這句是兩秒后調(diào)用startscroll函數(shù),但是當(dāng)在這兩秒內(nèi)你再移動(dòng)鼠標(biāo)離開元素觸發(fā)
area.onmouseout=function(){
clearInterval(time);
startscroll();
}
時(shí),就會(huì)調(diào)用多次的startscroll函數(shù),這時(shí)time=setInterval(scrollUp,speed);這句多次賦值,會(huì)造成多個(gè)循環(huán)調(diào)用,而且time只會(huì)指向最后一次賦值的循環(huán)調(diào)用。所以后面的clearInterval(time);只能清除一次循環(huán)調(diào)用,而對之前的毫無作用。所以就會(huì)形成惡性循環(huán),越來越快。
解決方法:可以在賦值語句time=setInterval(scrollUp,speed);前加個(gè)清除循環(huán)語句:clearInterval(time);
既
function startscroll(){
clearInterval(time);
time=setInterval(scrollUp,speed);
area.scrollTop++;
}
添加回答
舉報(bào)