天天看點

setTimeout執行程式的一個小問題

作者本意是滑鼠指針放到連結上時要5秒鐘後關閉視窗,代碼如下:

<script language=javascript>

function doThis(){

window.setTimeout(window.close(),5000);

}

</script>

<a href="#" onmouseover="doThis()">我想在5秒過後關閉此視窗</a>

但測試發現,滑鼠一放上去視窗就立即關閉,其實原因在于,js引擎在解釋時是順序讀取腳本的,讀到window.setTimeout(window.close(),5000);時,由于window.close是一段可執行腳本,于是就立即執行了,而沒有經過5秒後再解析,解決辦法時将window.close()寫入到一個函數中,然後用setTimeout調用函數,如

window.setTimeout("a()",5000);

function a()

{

window.close()

更簡單的解決方法是:

window.setTimeout("window.close()",5000);

即将語句用引号包含起來,這樣就不會被當成腳本了解執行,而等五秒鐘後setTimeout函數解析引号内内容再執行。

繼續閱讀