javascript - 使用 setTimeout 时出现 "function is not defined"?

标签 javascript html sessionstorage

无论出于何种原因,我无法重复此功能。一旦它获得 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();     

})
    

具有讽刺意味的是,如果我刷新页面,计数器就会工作,所以我知道它只是卡在了那一行。我可能缺少什么?

谢谢!

最佳答案

带有字符串参数的

setTimeout 只是一个全局 eval。当它尝试计算 getnumbers.countDigit() 时,它是在全局范围内计算的,并且不再具有访问 getnumbers 的权限。

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

setTimeout(getnumbers.countDigit, 3000);

关于javascript - 使用 setTimeout 时出现 "function is not defined"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9731556/

相关文章:

html - 页面上重复的背景渐变

javascript - session 存储在 window.location.replace 上丢失

javascript - 在html5中获取javascript变量

javascript - 在从 PHP 服务器返回的 HTML 之间放置内容(或广告)?

javascript - 在 javascript 中,创建属性时,哪个是正确的方法或更好的语法?

Javascript 突出显示 onclick 表格单元格

html - Mac OS Safari 12 图像与 svg 源显示滚动​​条

JavaScript 数组迭代

javascript - 条件语句和内联样式 - JQuery

javascript - jQuery 和 Chrome - 查找按钮 Hook