javascript - 简单的嵌套 setTimeout() 只运行一次 (JavaScript)

标签 javascript nested settimeout

出于某种原因,我的 galleryScroll() 函数只运行一次,即使该函数使用 setTimeout() 调用自身。我认为这个问题可能与范围有关,但我不确定:

http://jsfiddle.net/CYEBC/2/

$(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);
});​

Here is the updated fiddle.

关于javascript - 简单的嵌套 setTimeout() 只运行一次 (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10046731/

相关文章:

c - 嵌套循环意外行为

java - 嵌套的map<K,V>代替List<Object[]>作为返回值。任何问题?

javascript - 使用 jQuery 每次突发事件运行一次函数

javascript - 具有一个对象键/值的 d3 饼图

javascript - Facebook如何检查用户是否喜欢页面并显示内容?

具有嵌套模板的 Javascript 框架或 knockoutjs 库

javascript - setTimeout 无法正常工作

javascript - 在同一 php 页面中显示内容-单击按钮

php - 将目录路径转换为javascript对象

javascript - jQuery 中的旋转轮