2012-03-02 72 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' 作为第一个参数。