出于某种原因,我的 galleryScroll() 函数只运行一次,即使该函数使用 setTimeout() 调用自身。我认为这个问题可能与范围有关,但我不确定:
$(document).ready(function() {
var x = $('#box').offset().left;
var y = $('#box').offset().top;
galleryScroll();
function galleryScroll() {
x = x + 1;
y = y + 1;
$('#box').offset({
left: x,
top: y
});
setTimeout('galleryScroll()', 100);
}
});
HTML:
<html>
<head>
</head>
<body>
<div id="box">
</div>
</body>
</html>
最佳答案
galleryScroll()
函数未定义在正确的范围内,无法在 setTimeout()
中进行评估。如果您希望它循环运行,请在函数后的 setInterval()
中调用它。
$(document).ready(function() {
var x = $('#box').offset().left;
var y = $('#box').offset().top;
galleryScroll();
function galleryScroll() {
x = x + 1;
y = y + 1;
$('#box').offset({
left: x,
top: y
});
}
// Call in setInterval() outside the function definition.
// Note also, I've changed the eval string 'gallerySroll()' to the function reference galleryScroll
setInterval(galleryScroll, 100);
});
关于javascript - 简单的嵌套 setTimeout() 只运行一次 (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10046731/