使用setTimeout时“函数未定义”?

时间:2012-03-16 03:46:17

标签: javascript html5 sessionstorage

无论出于何种原因,我都无法重复此功能。一旦它获得了setTimeout,就会吐出“未被捕获的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 个答案:

答案 0 :(得分:6)

带有字符串参数的

setTimeout只是一个全局eval。当它尝试评估getnumbers.countDigit()时,会在全局范围内对其进行评估,并且无法再访问getnumbers

解决方案:不要传入字符串。相反,试试这个:

setTimeout(getnumbers.countDigit, 3000);