由于某种原因,我的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>
答案 0 :(得分:2)
函数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);
});
答案 1 :(得分:1)
您的问题是如何在setTimeout中调用galleryScroll()函数。将该行更改为:
setTimeout(galleryScroll, 100);
结果:http://jsfiddle.net/CYEBC/12/
注意:我不确定这是否是所需的行为,但是当您的代码被正确调用时会发生这种情况。