setInterval的问题

时间:2011-02-02 15:42:24

标签: javascript jquery function undefined intervals

我只是试图用jQuery实现setInterval的最基本的例子,并且遇到了问题。这有什么不对?

它表示没有定义函数rotate。

$(document).ready(function() {
    var speed = 5000;
    var run = setInterval("rotate()", speed);

    function rotate() {
        alert ('rotate');
    }
});

8 个答案:

答案 0 :(得分:6)

请改为:

$(document).ready(function() {
    var speed = 5000;

    function rotate() {
        alert ('rotate');
    }

    var run = setInterval(rotate, speed);
});

您也可以这样做:

$(function() {
    var speed = 5000;

    var run = setInterval(function() {
        alert ('rotate');
    }, speed);
});

如果您希望稍后能够清除时间间隔,则应在就绪事件处理程序之外声明run,否则它将超出范围。

答案 1 :(得分:2)

您正在将setInterval字符串传递给eval。这是:

  • 难以调试
  • 低效
  • 在不同的范围内执行

该函数的范围受限于其内部定义的函数。

直接传递函数

    var run = setInterval(rotate, speed);

答案 2 :(得分:1)

在setInterval调用中省略括号和引号。你给它的功能本身,而不是名称。它们的顺序无关紧要。

答案 3 :(得分:1)

这有效地评估了(我认为)其自身的背景。将其更改为

var run = setInterval(rotate, speed);

它应该没问题。

答案 4 :(得分:0)

甚至将旋转功能放在就绪功能之外。

答案 5 :(得分:0)

这是有效的

$(document).ready(function() {
    function rotate() {
        alert ('rotate');
    }
    var speed = 5000;
    var run = setInterval(function() { rotate() }, speed);

});

答案 6 :(得分:0)

您需要在全局范围内定义rotate

$(document).ready(function() {
    window.rotate = function() {
        alert ('rotate');
    }
    var speed = 5000;
    var run = setInterval("rotate()", speed);
});

答案 7 :(得分:0)

$(function() {
   var speed = 5000;
   var rotate = function() {
      alert("rotate");
   };

   window.setInterval(rotate, speed);
});
相关问题