亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

timer=null;為什么要作為全局變量。如果聲明timer=null;為局部變量,就會出問題,一直沒搞懂

timer=null;為什么要作為全局變量。如果聲明timer=null;為局部變量,就會出問題,一直沒搞懂

carey2015 2016-01-16 13:15:40
<script type="text/javascript"> //var timer=null;?window.onscroll=function(){ var scrollT=document.documentElement.scrollTop||document.body.scrollTop; var top=scrollT+(document.documentElement.clientHeight-$("box").offsetHeight)/2; showmove(top);}function showmove(target){ var timer=null; clearInterval(timer); timer=setInterval(function(){ var timer=null; var speed=(target-$("box").offsetTop)/8; speed=speed>0?Math.ceil(speed):Math.floor(speed); if ($("box").offsetTop==target) { clearInterval(timer); }else{ $("box").style.top=$("box").offsetTop+speed+"px"; document.title=speed; $("box1").style.top=$("box").offsetTop+speed+"px"; } },100)}function $(id){ return document.getElementById(id);}</script>
查看完整描述

1 回答

已采納
?
李曉健

TA貢獻1036條經驗 獲得超461個贊

因為如果你把 timer 定義到showmove 這個方法里面,每調用一次這個方法,就會重新定義一次,所以上一次調用時啟動了一個定時器,你在下一次調用這個方法時,就會重新去定義一次timmer,上一次的定時器的引用就會被覆蓋,然后timmer指向的就是這一次的定時,上次的沒沒有辦法取消了。在在showmove方法里 最上面的 clearInterval(timer);就是為了取消上一次的定時,你在這行上面又重拳定義了一個 timmer = null ; 所以clearInterval(timer); 這里面的timer就一直是空,并不是你上一次調用的這個方法啟動的定時器,所以頁面就會同時存在很多定時器。

查看完整回答
5 反對 回復 2016-01-16
  • 1 回答
  • 0 關注
  • 2070 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號