Javascript Jquery数组在运行完初始数组后返回undefined

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

我正试图修复这个背景音量控制器, 它可以工作,但它返回一些未定义的值,我无法理解, 任何帮助都将不胜感激

php只是读取一个目录并获取图像文件路径,然后使用其中的文本创建隐藏跨距

       $(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
!由于函数中的作用域,它创建了一个完全不同的变量