第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

麻煩大神解釋下以下代碼中var timer=null為什么不能放在函數(shù)里面。

麻煩大神解釋下以下代碼中var timer=null為什么不能放在函數(shù)里面。

慕田峪8701529 2017-08-22 09:26:48
<script> ? ?window.onload=function () ? ?{ ? ? ? ?var odiv=document.getElementById('div1'); ? ? ? ?odiv.onmouseover=function () ? ? ? ?{ ? ? ? ? ? ?StarMove(0); ? ? ? ?} ? ? ? ?odiv.onmouseout=function () ? ? ? ?{ ? ? ? ? ? ?StarMove(-100); ? ? ? ?} ? ?}//var timer=null; ?timer為什么一定要放在這里,而不能放在starmove函數(shù)里面? ?function StarMove(iTarget) ? ?{ ? ? ? ?var odiv=document.getElementById('div1'); ? ? ? ?var timer=null; //放這里的運(yùn)行結(jié)果有問題 ? ? ? ?clearInterval(timer); ? ? ? ?timer=setInterval(function (){ ? ? ? ? ? ?var iSpeed=0; ? ? ? ? ? ?if(odiv.offsetLeft<iTarget) ? ? ? ? ? ?{ ? ? ? ? ? ? ? ?iSpeed=10; ? ? ? ? ? ?} ? ? ? ? ? ?else ? ? ? ? ? ?{ ? ? ? ? ? ? ? ?iSpeed=-10; ? ? ? ? ? ?} ? ? ? ? ? ?if(odiv.offsetLeft==iTarget) ? ? ? ? ? ?{ ? ? ? ? ? ? ? ?clearInterval(timer); ? ? ? ? ? ?} ? ? ? ? ? ?else ? ? ? ? ? ?{ ? ? ? ? ? ? ? ?odiv.style.left=odiv.offsetLeft+iSpeed+'px'; ? ? ? ? ? ?} ? ? ? ?}, 30); ? ?}
查看完整描述

2 回答

?
Jaydon_

TA貢獻(xiàn)26條經(jīng)驗(yàn) 獲得超10個(gè)贊

Javascript中function代表的是對象, 你放在外面是全局變量,你要是想在里面使用,每次調(diào)用一次StartMove是不是timer就會(huì)初始化為null呢?當(dāng)然就會(huì)出現(xiàn)問題了...

查看完整回答
反對 回復(fù) 2017-08-24
?
信者得救

TA貢獻(xiàn)22條經(jīng)驗(yàn) 獲得超10個(gè)贊

當(dāng)timer=null放在外面的時(shí)候。全部setInterval,也就是每一次調(diào)用StarMove,共用一個(gè)timer變量來作原來定時(shí)器,clearInterval(timer)就可以清除掉之前的那一個(gè)定時(shí)器,再重新賦值給定時(shí)器。

當(dāng)timer=null放在函數(shù)里面的時(shí)候。每一個(gè),就是每一次onmouseover,調(diào)用函數(shù)StarMove時(shí),都會(huì)新建一個(gè)var timer,然后再clearInterval(timer)就清除不了之前的定時(shí)器了。所以這時(shí),每一次onmouseover時(shí),都會(huì)疊加一個(gè)定時(shí)器。你就會(huì)看到方塊的速度變快了。

查看完整回答
反對 回復(fù) 2017-08-22
  • 慕田峪8701529
    慕田峪8701529
    把 var timer=null;放在 function StarMove(iTarget)里面運(yùn)行結(jié)果不是速度變快了,而是一直在抖動(dòng)。。。
  • 信者得救
    信者得救
    我想了一下你說的抖動(dòng),應(yīng)該是因?yàn)槟銢]有設(shè)置*{margin:0;padding:0;}這樣在你設(shè)置定位的時(shí)候,設(shè)置了position:absolute;但又沒有設(shè)置left:0;這樣定位的時(shí)候就會(huì)是left:8px,top:8px,因?yàn)閕Speed為10,所以永遠(yuǎn)到達(dá)不了0px。 你把鼠標(biāo)從div1的左側(cè)移入你就會(huì)看到無論timer放在里還是外,都會(huì)抖動(dòng)。 而你加上left:0;你就會(huì)發(fā)現(xiàn)無論怎樣都不會(huì)抖動(dòng)。 再解釋一下為什么。 而從右側(cè)移入, 把timer放在外面的時(shí)候,onmouseover觸發(fā),然后onmouseout馬上觸發(fā),timer就會(huì)替換掉onmouseover時(shí)的那一個(gè),所以就會(huì)移出屏幕。 而把timer放在里面時(shí),就會(huì)產(chǎn)生兩個(gè)定時(shí)器。 兩個(gè)定時(shí)器都沒法到達(dá)終點(diǎn),所以就會(huì)一直運(yùn)行,所以就會(huì)抖動(dòng)。
  • 慕田峪8701529
    慕田峪8701529
    好像有點(diǎn)道理,但是我還需要捋一捋思路,感謝~~
  • 2 回答
  • 1 關(guān)注
  • 2585 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號