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

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么oDIV不能聲明成全局變量?要在每個函數里聲明一下才不會報錯。

<script type="text/javascript">

window.onload=function(){

var oDiv=document.getElementById('div1');

oDiv.onmouseover=function(){

startMove(0);

}

oDiv.onmouseout=function(){

startMove(-200);

}

}

var timer=null;

function startMove(Target){

var speed;

var oDiv=document.getElementById('div1');

if(oDiv.offsetLeft>Target){speed=-10}

else{speed=10}

clearInterval(timer);

timer=setInterval(function(){

if(oDiv.offsetLeft==Target){

clearInterval(timer);

}

else{

oDiv.style.left=oDiv.offsetLeft+speed+'px';

}

},30)

}

</script>

來大神講講變量的秘密。

正在回答

3 回答

主要是為了提高程序性能,其實在函數外聲明也是可以找到,只不過花費的時間比在函數內要長..

0 回復 有任何疑惑可以回復我~

你這樣申明, 其實已經算是全局變量了, 不信你可以試試, 函數申明是可以給它程序 里面的子函數用的, 子函數里面不用再重新申請這個變量。

//?如果oDiv放在onload之外聲明,這時候還沒有加載到下面的html標簽,

你這句話是錯誤的, 如果沒有加onload,才是在執行script的時候, 這個div還沒有被創建, 所以你獲取不到, 而一旦加了onload, 就是表示你的html加載完成以后, 再執行onload里面的內容 ,, 所以你理解有誤

0 回復 有任何疑惑可以回復我~

這個問題我想明白了。因為代碼是從上往下被加載的,如果oDiv放在onload之外聲明,這時候還沒有加載到下面的html標簽,這個聲明是無效的。所以寫在頭部的js代碼要取對象必須在onload里面才不會出錯!

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么oDIV不能聲明成全局變量?要在每個函數里聲明一下才不會報錯。

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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