我只是试图用jQuery实现setInterval的最基本的例子,并且遇到了问题。这有什么不对?
它表示没有定义函数rotate。
$(document).ready(function() {
var speed = 5000;
var run = setInterval("rotate()", speed);
function rotate() {
alert ('rotate');
}
});
答案 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);
});