我有这样的代码

window.onload = function() {            
    function foo() {
        alert("test");
    }
    setInterval("foo()",500)
}

返回未定义...当我使用它,它的工作原理在window.onload之外。任何人能解释我为什么?

有帮助吗?

解决方案

setInterval()使用字符串命令将试图寻找在全球(窗口)范围的功能,但由于该功能是在本地范围内定义的,它不会被发现。你应该通过函数本身,而不是到setInterval()

window.onload = function() {            
    function foo() {
        alert("test");
    }
    setInterval(foo, 500);
}

其他提示

尝试这种情况:

function foo() {
    alert("test");
}

window.onload = function() {            
    setInterval("foo()",500)
}

这对我的作品。

可替换地,可以在呼叫给setInterval中定义的函数:

window.onload = function() {
    setInterval(
        function foo() {
            alert("test");
        },
        500
    );
}

,则应该设置的功能,而不是setInterval()

还记得清除上window.onunloadwindow.beforeonunload间隔

const CheckFoo = () => {
    const start = new Date().getTime();

    console.log("check", start);
};
window.onload = function foo() {
    window.setInterval(CheckFoo, 500);
};

window.onunload = function foo() {
    window.clearInterval(CheckFoo);
};
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top