2012-03-16 132 views
1

无论出于何种原因,我都无法重复这个功能。一旦它得到的setTimeout,它吐出来的是“未捕获的ReferenceError:getnumbers没有定义(其中getnumbers是变量的只是名字使用setTimeout时,“函数未定义”?

 
$(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();  

}) 
    

讽刺的是,如果我刷新页面的计数器的工作原理,所以我知道。它只是卡住这条线,我该怎么办会丢失?

谢谢!

+0

http://stackoverflow.com/questions/3741503/why-do-i-get-my-function-is-not-defined-when-passing-a-string-to -settimeout – 2012-03-16 03:51:06

回答

6

setTimeout用字符串参数只是一个全球性的eval,当它试图评估getnumbers.countDigit(),它在全球范围内评估,并且不再有权访问getnumbers

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

setTimeout(getnumbers.countDigit, 3000); 
+0

就像一个魅力工作!我尝试了同样的事情,但忘了脱掉() - 很好的抓住!谢谢! – tlflow 2012-03-16 11:19:53