javascript - 从 jquery 嵌套函数更新全局变量

标签 javascript jquery scope nested

我对这段代码有疑问:

var elements;
var current = 100;

$(document).ready(function() {
        elements =  = $('.slide').length;
        iterate();
});

function iterate() {
        $('.slide').eq(current).hide().queue(
                function() {
                        if (++current >= elements) { current = 0; }
                        $('.slide').eq(current).show();
                        $(this).dequeue();
                }
        );

        // Call this function again after the specified duration
        setTimeout(iterate, 1000);
}

我想做的是迭代具有“幻灯片”类的所有元素,但更新“当前”变量时遇到问题。它的值始终为 0。如何从嵌套 jquery 函数内部修改全局变量?

最佳答案

如果在 DOM 准备好之前调用此行,.length0 :

var elements = $('.slide').length;

这意味着if的条件永远是true :

if (++current >= elements) { current = 0; }

你可以这样修复它:

var elements;
var current = 100;

$(document).ready(function() {
    elements = $('.slide').length;
    iterate();
});

此外,.queue() 的使用有点奇怪。 。没有什么需要排队的。

我会像这样重新设计:

function iterate() {
    var slide = $('.slide').eq(current).hide();
    if (++current >= elements) { current = 0; }
    $('.slide').eq(current).show();

    // Call this function again after the specified duration
    setTimeout(iterate, 1000);
}

关于javascript - 从 jquery 嵌套函数更新全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12944141/

相关文章:

javascript - 即时编辑 HTTP 请求

javascript - 如何使用jquery显示隐藏的表单字段

javascript - 我如何让这个脚本将元素集中在 keydown/keypress 上?

javascript - 页面加载时的 jQuery 触发器

Extjs 如何在扩展时初始化新元素 - 而不会丢失范围

javascript - 了解 "find longest word in string"代码

javascript - 为什么存在以及如何从页面 [Img inside] 中删除此空白区域

javascript - 当我从另一个页面将内容加载到 div 时,JqueryDatepickers 和数据表未启动

javascript - javascript 中 x 的两个不同值

C++:从函数访问主变量的最简单方法?