2

我有这个代码

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

返回未定义...当我在 window.onload 之外使用它时,它可以工作。谁能解释我为什么?

4

4 回答 4

12

使用字符串命令 insetInterval()将尝试在全局(窗口)范围内查找函数,但由于该函数是在本地范围内定义的,因此不会找到。您应该将函数本身传递给setInterval()

window.onload = function() {            
    function foo() {
        alert("test");
    }
    setInterval(foo, 500);
}
于 2010-01-29T13:46:32.727 回答
1

试试这个:

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

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

这个对我有用。

于 2010-01-29T13:46:21.607 回答
0

或者,您可以在 setInterval 调用中定义函数:

window.onload = function() {
    setInterval(
        function foo() {
            alert("test");
        },
        500
    );
}
于 2010-01-29T13:50:13.800 回答
0

您应该将功能设置为setInterval()

window.onunload还记得在或上清除间隔window.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);
};
于 2018-03-29T19:56:07.410 回答