Mozilla中的setInterval()问题(Javascript函数)

时间:2012-03-02 14:42:54

标签: javascript settimeout setinterval

我正在使用JavaScript:权威指南
它提供了以下代码来解释setTimeout()和setInterval(),我的问题是它在Safari中运行时没有问题 但是在Mozilla它似乎根本没有触发,任何人都有 想法?

  

问题在于以下功能:

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

如果我没有设置inverval并结束,它会起作用,但是如果我这样做的话   有些东西变得糊涂

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

这只是在setTimeout()和上运行的虚函数   的setInterval()

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



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

跳跃地,有人对这一个有所了解,谢谢。

3 个答案:

答案 0 :(得分:1)

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

应该是

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

否则,您将传递字符串'f,200,1000,5000'作为第一个参数。

答案 1 :(得分:0)

由于您的第二个单引号的位置,您似乎将一个变量传递给invoke函数。尝试将其更改为

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

看看它是否有效。

答案 2 :(得分:0)

JSFiddle这似乎现在有效,

正如其他人所说,你需要删除你的参数来调用

也是firefox的firefox(如果你还没有得到它)​​失败,重复是未定义的,所以我也修改了一点。