Jquery 尝试每个元素每四分之一秒运行一次函数,为什么我的计数不会增加?
在DocumentReady上,我有一个函数在下面调用,但它只增加一次,然后无限循环,我是怎么做的呢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
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);
});