"функция не определена" при использовании setTimeout? - PullRequest
1 голос
/ 16 марта 2012

По какой-то причине я не могу повторить эту функцию.Как только он получает setTimeout, он выплевывает "uncaught referenceerror: getnumbers не определен (где getnumbers - это просто имя переменной.

$(document).ready(function(){


    var getnumbers = {

        countDigit: function(){

            if (sessionStorage.counter=="NaN"){
                sessionStorage.counter="0";                                   
            }
            else {
                sessionStorage.counter=Number(sessionStorage.counter)+1;

            }

            $("#result").text("counter: " +sessionStorage.counter);

            setTimeout("getnumbers.countDigit()",3000);             

        },

        _init: function(){
            getnumbers.countDigit();    
        }
    };

    getnumbers._init();     

})
    

По иронии судьбы, если я обновлю страницу, счетчик работает, поэтомуЯ знаю, что он просто застрял в этой строке. Чего мне не хватать?

Спасибо!

1 Ответ

6 голосов
/ 16 марта 2012

setTimeout со строковым аргументом является просто глобальным eval.Когда он пытается оценить getnumbers.countDigit(), он оценивается в глобальной области и больше не имеет доступа к getnumbers.

Решение: Не передавать строку.Вместо этого попробуйте это:

setTimeout(getnumbers.countDigit, 3000);
...