Javascript Jquery数组在运行完初始数组后返回undefined
我正试图修复这个背景音量控制器, 它可以工作,但它返回一些未定义的值,我无法理解, 任何帮助都将不胜感激 php只是读取一个目录并获取图像文件路径,然后使用其中的文本创建隐藏跨距Javascript Jquery数组在运行完初始数组后返回undefined,javascript,jquery,arrays,background,Javascript,Jquery,Arrays,Background,我正试图修复这个背景音量控制器, 它可以工作,但它返回一些未定义的值,我无法理解, 任何帮助都将不胜感激 php只是读取一个目录并获取图像文件路径,然后使用其中的文本创建隐藏跨距 $(document).ready(function () { /* DocReady */ var counter = 0; var faderImgs = new Array(); $('span.entry').each(fun
$(document).ready(function () {
/* DocReady */
var counter = 0;
var faderImgs = new Array();
$('span.entry').each(function () {
var value = 'images/bg/' + $(this).text();
faderImgs.push(value);
$('<img />').attr('src', value).appendTo(this).css('display', 'none');
})
/* DocReady */
var intId = setInterval(faderBg, 8000);
var numItems = $('span.entry').length;
function faderBg() {
$('.background-fader').animate({
'opacity': '0'
}, 2000, function () {
$('.background-fader').css('background-image', 'url(' + faderImgs[counter] + ')')
$('.background-fader').animate({
'opacity': '1'
}, 2000)
})
counter++;
if (counter > numItems) {
var counter = 0;
}
}
});
$(文档).ready(函数(){
/*DocReady*/
var计数器=0;
var faderImgs=新数组();
$('span.entry')。每个(函数(){
var值='images/bg/'+$(this.text();
faderImgs.push(值);
$('numItems){
var计数器=0;
}
}
});
----------------------------编辑---------------------------------------
太棒了谢谢你们的帮助,
现在一切都正常了。您的计数器从数组的末尾溢出。当它等于时,您希望将其设置回零,而不是当它更大时;JavaScript数组从零开始,因此最大的索引是
numItems-1
counter++;
if (counter >= numItems) { // >=, not >
counter = 0;
}
另外,当您将“计数器”设置回零时,不需要var
。您应该使用.prop()
而不是.attr()
来设置这些
edit-@charlietfl正确地指出,这种偏离的var
会给您带来严重的问题,因为它会导致内部函数中存在一个局部“counter”变量。事实上,如果它存在于您的真实代码中,我无法想象它会如何工作,因为“counter”总是未定义的(或NaN
我猜在后增量之后)。强调不需要var
!由于函数中的作用域,它创建了一个完全不同的变量