使用setTimeout时"函数未定义"?

tlf*_*low 1 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();     

})
    

具有讽刺意味的是,如果我刷新页面计数器是有效的,那么我知道它只是卡在那一行上.我能错过什么?

谢谢!

ick*_*fay 6

setTimeout带字符串参数只是一个全局变量eval.当它尝试评估时getnumbers.countDigit(),它将在全局范围内进行评估,并且不再具有访问权限getnumbers.

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

setTimeout(getnumbers.countDigit, 3000);
Run Code Online (Sandbox Code Playgroud)