Jquery 尝试每个元素每四分之一秒运行一次函数,为什么我的计数不会增加?

Jquery 尝试每个元素每四分之一秒运行一次函数,为什么我的计数不会增加?,jquery,Jquery,在DocumentReady上,我有一个函数在下面调用,但它只增加一次,然后无限循环,我是怎么做的呢 var initNavTransition = function (ELs, n, c) { console.log("n: "+n+ ". c: "+c+ ". ELs.length: "+ ELs.length); if (typeof variable === 'undefined' || !variable) c = 0; if (c < E

在DocumentReady上,我有一个函数在下面调用,但它只增加一次,然后无限循环,我是怎么做的呢

var initNavTransition = function (ELs, n, c) {
    console.log("n: "+n+ ". c: "+c+ ". ELs.length: "+ ELs.length);
    if (typeof variable === 'undefined' || !variable)
        c = 0;
    if (c < ELs.length) {
        if(c > 0)
            ELs[c-1].className = ELs[n-1].className.replace('hover', '');
        ELs[c].className += 'hover';
        c++;
        console.log('increment c: '+c);
        setTimeout(function() {
            initNavTransition(ELs, n, c);
        }, 250);
    }
};

$(document).ready(function(){
    var navELs = document.querySelectorAll('nav li');
    initNavTransition(navELs, navELs.length);
    });
HTML:


在我看来,您没有正确地传递或初始化c

也许这是:

if (typeof variable === 'undefined' || !variable)
应包括这两种情况,并参考c:

或者,也许更好,您可以在第一次调用函数时将c作为0传递:

$(document).ready(function(){
    var navELs = document.querySelectorAll('nav li');
    initNavTransition(navELs, navELs.length, 0);
});

我不知道你为什么不调用c定义的initNavTransition;但您对变量的检查应该是对c的检查:


什么是变量?如果未定义false,则您会不断将c设置回0。我必须指出,对于名为c、n和Els的通用变量以及零注释,您的代码的意图/目的是完全不清楚的。有意义的变量名会让其他人更容易理解你的代码。改变一下这件事。如果typeof c==‘未定义’| |!C
if (!c)
$(document).ready(function(){
    var navELs = document.querySelectorAll('nav li');
    initNavTransition(navELs, navELs.length, 0);
});
var initNavTransition = function (ELs, n, c) {
    console.log("n: "+n+ ". c: "+c+ ". ELs.length: "+ ELs.length);
    if (!c)
        c = 0;
    if (c < ELs.length) {
        if(c > 0)
            ELs[c-1].className = ELs[n-1].className.replace('hover', '');
        ELs[c].className += 'hover';
        c++;
        console.log('increment c: '+c);
        setTimeout(function() {
            initNavTransition(ELs, n, c);
        }, 250);
    }
};

$(document).ready(function(){
    var navELs = document.querySelectorAll('nav li');
    initNavTransition(navELs, navELs.length);
    });