最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

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

關(guān)于作用域的問題求教?。?!

第一種情況<!DOCTYPE?html> <html> <head> <meta?charset="UTF-8"> <title>Document</title> <style?type="text/css"> #div1?{width:200px;height:200px;background:?red;position:absolute;top:50px;} </style> <script?type="text/javascript"> var?timer=""; function?startMove(){ var?oDiv=document.getElementById('div1'); var?oBtn=document.getElementById('btn1'); var?speed=10; clearInterval(timer); timer=setInterval(function(){ oDiv.style.left=oDiv.offsetLeft+speed+"px" },30) } </script> </head> <body> <input?type="button"?id="btn1"?onclick="startMove()"?> <div?id="div1"></div> </body> </html>該情況下div可正常右移!第二種情況<!DOCTYPE?html> <html> <head> <meta?charset="UTF-8"> <title>Document</title> <style?type="text/css"> #div1?{width:200px;height:200px;background:?red;position:absolute;top:50px;} </style> <script?type="text/javascript"> function?startMove(){ var?oDiv=document.getElementById('div1'); var?oBtn=document.getElementById('btn1'); var?speed=10; var?timer=""; clearInterval(timer); timer=setInterval(function(){ oDiv.style.left=oDiv.offsetLeft+speed+"px" },30) } </script> </head> <body> <input?type="button"?id="btn1"?onclick="startMove()"?> <div?id="div1"></div> </body> </html>此情況下點擊buttn次數(shù)越多 div速度越快,, 請問為什么?? timer在里面在外面有區(qū)別嗎?第三種情況<!DOCTYPE?html> <html> <head> <meta?charset="UTF-8"> <title>Document</title> <style?type="text/css"> #div1?{width:200px;height:200px;background:?red;position:absolute;top:50px;} </style> <script?type="text/javascript"> var?oDiv=document.getElementById('div1'); var?oBtn=document.getElementById('btn1'); var?speed=10; var?timer=""; function?startMove(){ clearInterval(timer); timer=setInterval(function(){ oDiv.style.left=oDiv.offsetLeft+speed+"px" },30) } </script> </head> <body> <input?type="button"?id="btn1"?onclick="startMove()"?> <div?id="div1"></div> </body> </html>在這種情況下會報錯,,但是為什么。。我定義的那些odiv obtn之類的不是全局變量嗎?為什么會報錯??求高人解答?。?!
查看完整描述

1 回答

已采納
?
堂堂堂堂糖糖糖童鞋

TA貢獻101條經(jīng)驗 獲得超58個贊

第一個問題:此情況下點擊buttn次數(shù)越多 div速度越快,, 請問為什么?? timer在里面在外面有區(qū)別嗎?

速度愈來愈快的原因是定時器同一時間內(nèi)疊加的效果,就是30ms 內(nèi)有多個定時器(回調(diào)函數(shù))在執(zhí)行。

timer在外面是全局變量,每次點擊不會重新聲明,那么 clearInterval(timer) 就能夠起作用,從而清除上一個定時器

timer在里面是局部變量,每次點擊重新聲明,timer 還沒被賦值,就被 clearInterval(timer),那么這個 clearInterval(timer)并不會清除掉定時器,導(dǎo)致同一時刻多個定時器同時存在,盒子移動的越來越快。


第二個問題:在這種情況下會報錯,,但是為什么。。我定義的那些odiv obtn之類的不是全局變量嗎?為什么會報錯??

這是加載順序的問題,腳本放到 <head> 中,所以執(zhí)行要先于 <body> 中的DOM渲染,導(dǎo)致并不能取到那個 <div> 元素,所以一直都是 null。改進的辦法是用?

window.onload?=?function?()?{?
????//?你的代碼
}

包括一下,等到窗口加載完成,也就是頁面完全渲染出來之后執(zhí)行,那么就可以取到 <div>了。

或者是放到 </body> 結(jié)束標簽的前面也是可以的,就是保證DOM先渲染,然后再操作。

查看完整回答
1 反對 回復(fù) 2017-12-12
  • 1 回答
  • 0 關(guān)注
  • 1236 瀏覽
慕課專欄
更多

添加回答

了解更多

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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