在javascript中添加超时延迟?

时间:2013-02-02 01:52:39

标签: javascript

有人可以帮助我,我试图让这个javascript在使用超时3秒延迟后启动它的功能。

我还在学习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> 

2 个答案:

答案 0 :(得分:2)

简而言之,你有这个:

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

那不行。这表示在3秒后,为窗口的onload事件分配处理程序。此时事件已经(很可能)被解雇了。所以这个功能不会执行。

相反,翻转它。

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

所以在这里,当窗口加载时,你会在3秒后做一些事情。

答案 1 :(得分: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);
};