2011-02-13 73 views
0

我真的不是很熟悉javascript和它的語法,但是我已經計算出了這個函數,並且當我遞歸地調用它的時候我總是收到錯誤。javascript的問題,簡單的遞歸函數

function loading(id, formid, point) 
{ 
    document.getElementById(id).innerHTML='<span class="red">Please wait until this text disappears! Uploading'+point+'</span>'; 
    document.getElementById(formid).submit(); 
     if(point='...') 
      {point='';} 
     else 
      {point+='.';} 
     setTimeout('loading('+id+', '+formid+', '+point+')',10); 
} 

我得到的錯誤是:

Uncaught TypeError: Cannot call method 'submit' of null 

所以它看起來像變量formid不會傳遞到recursiv通話。有人知道爲什麼

謝謝!

Maenny

+0

將`if(point ='...')`改爲`if(point =='...')`。 「=」表示賦值(您將值「...」賦予變量點),您需要使用「==」驗證相等性 – 2011-02-13 17:55:45

+0

Doh!我可以親眼看到...謝謝! – Maenny 2011-02-15 10:30:22

回答

4

當你EVAL formid到函數再次,你是不是帶有引號,所以你傳遞一個未定義的變量而不是字符串。

無論如何eval是邪惡的。不要將字符串傳遞給setTimeout,傳遞函數。

setTimeout(function() { 
    loading(id, formid, point); 
},10);