2012-03-02 70 views
0

我正在運行JavaScript:權威指南
它提供了以下代碼來解釋setTimeout()和setInterval(),我的問題是它在Safari中運行沒有問題 但在Mozilla它似乎並沒有觸發,任何人有任何 的想法?Mozilla中的setInterval()問題(Javascript函數)

的問題是在以下功能:

function invoke(f,start,interval,end){ 
     if(!start) start=0; //default to 0ms (start right away) 
     if (arguments.length <= 2) 
      setTimeout(f,start); 

它的功能,如果我不設置inverval和結束,但如果我不 不順心的janky

else{ 
     setTimeout(repeat,start); 
     function repeat(){ 
     var h = setInterval(f,interval); 
     //if(end)setTimeout(function(){clearInterval(h)},end); 
     } 
    } 
    } 

Thi s是剛上的setTimeout運行虛擬函數()和 的setInterval()

function f(){ 
    if(true) 
     alert("yo"); 
    } 



<button onclick="invoke('f,200,1000,5000')">yo</button> 

Hopfully有人爲有一些洞察到這一個,謝謝。

+0

當間隔運行時會發生什麼? 'janky'不是一個非常具有描述性的術語,最後我看起來並不在我的編程字典中。你是否嘗試過沒有阻塞警報?嘗試僅使用console.log()來代替。 – jfriend00 2012-03-02 14:50:24

回答

0

JSFiddle這個現在看來工作,

爲其他人所說,你需要刪除的角落找尋你的參數來調用

還Firefox的Firebug(得到它,如果你不已經)失敗重複是不確定的,所以我也修改了一下。

0

由於放置了第二個單引號,它看起來像是將一個變量傳遞給了invoke函數。嘗試將其更改爲

<button onclick="invoke('f',200,1000,5000)">yo</button>

,看看是否可行更好。

1
<button onclick="invoke('f,200,1000,5000')">yo</button> 

應該

<button onclick="invoke(f,200,1000,5000)">yo</button> 

否則,你傳遞字符串 'F,200,1000,5000' 作爲第一個參數。