在文档就绪时,我有一个被调用的函数(下面),但它只会增加一次然后无限循环,我做了什么导致这个?
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:
<nav>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</nav>
答案 0 :(得分:0)
我认为你没有正确传递或初始化c
。
也许这就是:
if (typeof variable === 'undefined' || !variable)
应该是这个(涵盖两种情况并引用c
):
if (!c)
或者,或许更好,您可以在第一次调用函数时将c
作为0
传递:
$(document).ready(function(){
var navELs = document.querySelectorAll('nav li');
initNavTransition(navELs, navELs.length, 0);
});
答案 1 :(得分:0)
我不知道你为什么不用c定义调用initNavTransition;但是你的变量检查应该是对c的检查:
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);
});