我只是想用 jQuery 实现 setInterval 的最基本示例并且遇到问题。这里有什么问题?
它说功能旋转未定义。
$(document).ready(function() {
var speed = 5000;
var run = setInterval("rotate()", speed);
function rotate() {
alert ('rotate');
}
});
我只是想用 jQuery 实现 setInterval 的最基本示例并且遇到问题。这里有什么问题?
它说功能旋转未定义。
$(document).ready(function() {
var speed = 5000;
var run = setInterval("rotate()", speed);
function rotate() {
alert ('rotate');
}
});
改为这样做:
$(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
,否则它将超出范围。
您正在将setInterval
字符串传递给 eval。这是:
该函数的范围仅限于它在内部定义的函数。
而是直接传递函数
var run = setInterval(rotate, speed);
在 setInterval 调用中省略圆括号和引号。您给它的是功能本身,而不是名称。他们进入的顺序应该无关紧要。
这实际上是在(我相信是)它自己的上下文中评估轮换。将其更改为
var run = setInterval(rotate, speed);
应该没问题。
甚至将旋转功能放在就绪功能之外。
这行得通
$(document).ready(function() {
function rotate() {
alert ('rotate');
}
var speed = 5000;
var run = setInterval(function() { rotate() }, speed);
});
您需要rotate
在全局范围内定义。
$(document).ready(function() {
window.rotate = function() {
alert ('rotate');
}
var speed = 5000;
var run = setInterval("rotate()", speed);
});
$(function() {
var speed = 5000;
var rotate = function() {
alert("rotate");
};
window.setInterval(rotate, speed);
});