2012-03-16 53 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

相關問題