我正在尝试修复此背景推子, 它工作但它返回一些未定义的值,我无法弄清楚, 任何帮助将不胜感激。
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;
}
}
});
----------------------------编辑------------------ ---------------------
非常感谢帮助人员, 所有人现在都在工作。
答案 0 :(得分:2)
您的计数器正在从阵列末端溢出。当等于到“numItems”时,你想把它设置回零,而不是当它更大时; JavaScript数组从零开始,因此最大的索引是numItems - 1
。
counter++;
if (counter >= numItems) { // >=, not >
counter = 0;
}
此外,当您将“计数器”设置为零时,您不需要var
。您应该使用.prop()
代替.attr()
来设置您创建的<img>
个元素的“src”属性。 (我不知道为什么你甚至懒得去创建它们,除非将图像预先提取到浏览器缓存中。如果是这样,就不需要在DOM中添加<img>
元素 - 只需创建一个Image
实例并设置其“src”属性。)
编辑 - @charlietfl正确地指出,流浪var
会给您带来严重问题,因为这会导致出现本地“计数器“在内部功能中变量。事实上,如果它存在于你的真实代码中,我无法想象它是如何工作的,因为“counter”总是undefined
(或者NaN
我想在后增量之后。)