1

有人可以帮助我吗?我正在尝试让这个 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> 
4

2 回答 2

2

所以简而言之,你有这个:

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

那是行不通的。这就是说,在 3 秒后,为窗口的onload事件分配一个处理程序。那时,事件已经(很可能)触发了。所以这个函数不会执行。

相反,翻转它。

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

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

于 2013-02-02T01:56:42.587 回答
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);

或者在所有资源完成加载后反转setTimeoutandwindow.onload等待 3 秒。

window.onload = function showPopUp(el) {
    setTimeout(function () {
       // ...
    }, 3000);
};
于 2013-02-02T01:56:25.200 回答