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