проблема setInterval и window.onload - PullRequest
2 голосов
/ 29 января 2010

У меня есть этот код

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

Что возвращает неопределенное ... Когда я использую его за пределами окна. Загрузка это работает. Может кто-нибудь объяснить мне, почему?

Ответы [ 4 ]

9 голосов
/ 29 января 2010

Используя строковую команду в setInterval(), мы попытаемся найти функцию в глобальной (оконной) области, но поскольку функция определена в локальной области, она не будет найдена. Вместо этого вы должны передать саму функцию setInterval().

window.onload = function() {            
    function foo() {
        alert("test");
    }
    setInterval(foo, 500);
}
1 голос
/ 29 января 2010

Попробуйте это:

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

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

Это работает для меня.

0 голосов
/ 29 марта 2018

Вы должны установить функцию на 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);
};
0 голосов
/ 29 января 2010

В качестве альтернативы вы можете определить функцию в вызове setInterval:

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