JavaScript進(jìn)階教程(第三課第二部分)
定時(shí)器的功能主要在于設(shè)定某個(gè)未來的時(shí)間,讓Javascript到時(shí)執(zhí)行某個(gè)語句:
var the_string = "hello";
the_timeout = setTimeout("alert(the_string);", 60000);
這兩行指令讓JavaScript等待一分鐘然后彈出一個(gè)提示框顯示the_string變量所包含的內(nèi)容。所以一分鐘后JavaScript就尋找叫做the_string的變量并調(diào)用alert()。但是問題是一分鐘后該變量中所包含的內(nèi)容可能是別的什么。所以如果你把這兩行代碼放在一個(gè)函數(shù)內(nèi),setTimeout有可能會(huì)報(bào)錯(cuò)。例如在下例中:
function alertInAMinute()
{
var the_string = "hello";
the_timeout = setTimeout("alert(the_string);", 60000);
}
然后你在某個(gè)鏈接中調(diào)用這個(gè)函數(shù):
<a href="#" onClick="alertInAMinute(); return false;">blah!</a>
可能會(huì)出錯(cuò)。因?yàn)槟愣x名為the_string的變量時(shí)用的是var,而當(dāng)你在一個(gè)函數(shù)內(nèi)使用var時(shí),Javascript將其理解為該變量只存在于該函數(shù)中。一旦離開該函數(shù)而進(jìn)入另一個(gè)函數(shù)后,該變量就會(huì)從Javascript的內(nèi)存中消失。所以當(dāng)后來需要調(diào)用該變量時(shí),Javascript從它的內(nèi)存中是不可能找到該變量的,錯(cuò)誤因此就產(chǎn)生了。
產(chǎn)生問題的原因在于你將一個(gè)變量傳遞給setTimeout。你可以通過將變量的值而不是變量本身傳遞給setTime來避免這個(gè)問題:
function alertInAMinute()
{
var the_string = "hello";
the_timeout = setTimeout("alert('" + the_string + "');",60000);
}
這段代碼將變量the_string從setTimeout的引號(hào)中拉出來,由于該變量變量目前不在setTimeout的引號(hào)內(nèi),JavaScript就可以從內(nèi)存中找到該變量的值。
定時(shí)器在動(dòng)態(tài)HTML中用途非常廣泛,所以值得你仔細(xì)研究它。
相關(guān)文章
Javascript排序算法之合并排序(歸并排序)的2個(gè)例子
這篇文章主要介紹了Javascript排序算法之合并排序(歸并排序)的2個(gè)例子,需要的朋友可以參考下2014-04-04
實(shí)現(xiàn)前后端數(shù)據(jù)交互方法匯總
這篇文章給大家介紹幾種常用的前后端數(shù)據(jù)交互方法,并給出使用建議。以提高前后端協(xié)同開發(fā)的效率。非常的詳細(xì),推薦給小伙伴們,有需要的小伙伴可以參考下。2015-04-04
JavaScript 基礎(chǔ)篇之對(duì)象、數(shù)組使用介紹(三)
對(duì)象我們?cè)谇懊嬉埠唵谓榻B過,它是一種將多個(gè)數(shù)據(jù)值集中在一個(gè)單元的東西,使用名字來存取,它是一個(gè)無序的屬性集合2012-04-04
JavaScript的Set數(shù)據(jù)結(jié)構(gòu)詳解
這篇文章主要為大家介紹了JavaScript的Set數(shù)據(jù)結(jié)構(gòu),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01
JavaScript高級(jí)程序設(shè)計(jì)(第3版)學(xué)習(xí)筆記7 js函數(shù)(上)
如果說對(duì)象是房間,那么函數(shù)就是有魔幻效應(yīng)的房間了。函數(shù)首先是對(duì)象,然后這個(gè)函數(shù)對(duì)象還具有很多魔幻功能2012-10-10
每日十條JavaScript經(jīng)驗(yàn)技巧(一)
本文是每日十條JavaScript經(jīng)驗(yàn)技巧系列文章的第一篇,給大家匯總介紹一些在JavaScript使用過程中的注意事項(xiàng),非常的簡單,都是個(gè)人在平時(shí)項(xiàng)目中的一點(diǎn)小小的總結(jié),希望對(duì)大家能夠有所幫助2016-06-06

