2013-02-02 53 views
1

有人可以幫我請,我想讓這個JavaScript啓動它的功能後,使用超時3秒延遲。添加超時延遲到JavaScript?

我仍然在學習javascript和jquery,並會很感激,如果有人能告訴我哪裏會出錯,以及如何解決它。

謝謝。

<script type="text/javascript"> 
    setTimeout(function(){ 
window.onload = function showPopUp(el) { 
var cvr = document.getElementById("cover") 
var dlg = document.getElementById("dialog") 
cvr.style.display = "block" 
dlg.style.display = "block" 
if (document.body.style.overflow = "hidden") { 
    cvr.style.width = "1024" 
    cvr.style.height = "100&#37;" 
    } 
} 
},3000); 

</script> 
+0

你真的應該點擊這裏:http://jsbeautifier.org/ –

回答

1

這是錯誤的:

setTimeout(function() { 
    window.onload = function showPopUp(el) { 

此分配在3秒後的處理程序onload,通過該時間窗口可能已經已經加載。


擺脫window.onload = function showPopUp(el) {...}部分,等待腳本加載3秒鐘。

setTimeout(function() { 
    var cvr = document.getElementById("cover") 
    var dlg = document.getElementById("dialog") 
    cvr.style.display = "block" 
    dlg.style.display = "block" 
    if (document.body.style.overflow = "hidden") { 
     cvr.style.width = "1024" 
     cvr.style.height = "100&#37;" 
    } 
}, 3000); 

或逆轉setTimeoutwindow.onload來完成加載的所有資源後,等待3秒。

window.onload = function showPopUp(el) { 
    setTimeout(function() { 
     // ... 
    }, 3000); 
}; 
2

因此,在短期,你有這樣的:

setTimeout(function() { 
    window.onload = function() { 
     // do stuff... 
    } 
}, 3000); 

這是行不通的。這就是說,3秒後,爲窗口的onload事件分配一個處理程序。此時事件已經(很有可能)被解僱。所以這個功能不會執行。

相反,翻轉它。

window.onload = function() { 
    setTimeout(function() { 
     // do stuff... 
    }, 3000); 
} 

所以在這裏,當窗口加載時,你在3秒鐘後做一些事情。