我在一个网站上工作,即时通讯在IE9中的滑块出现问题。我所做的是,我制作了一个div,它根据背景图像中的img标签每隔几秒钟更改一次背景图像。
您可以在这里的功能中看到它:http://diakondk.quine.pil.dk/
它可以在大多数浏览器中运行,但是我似乎无法弄清楚为什么它不能在IE9中工作,或者由于没有JS大师,我将如何使其工作。
有什么建议么?
var slideshow = (function () {
var images = $('.img-slider-wrapper img').map(function() {
return this.src;
}).get()
for(i = 0; i < images.length; i++) {
$(".selector").append('<div class="dot" data-image="'+i+'" id="dot'+i+'"></div>');
}
var index = images.length - 1;
var dot = "#dot"+index;
var timer = setTimeout(slideshow, 8000);
$('.selector .dot').click(function() {
index = this.dataset.image;
$(".img-slider-wrapper").css('background-image', 'url(' + images[index] + ')');
$(".dot.active").removeClass("active");
dot = "#dot"+index;
$(dot).addClass("active");
clearTimeout(timer);
timer = setTimeout(slideshow, 8000);
});
return function () {
index = (index + 1) % images.length;
$(".img-slider-wrapper").css('background-image', 'url(' + images[index] + ')');
$(".dot.active").removeClass("active");
dot = "#dot"+index;
$(dot).addClass("active");
clearTimeout(timer);
timer = setTimeout(slideshow, 8000);
}
}());
$(document).ready(slideshow);
最佳答案
您在所有浏览器中对setTimeout
的调用均失败,但在IE9中出现异常(这将阻止进一步的脚本执行)。
这是时间问题。在您致电的那一刻
var timer = setTimeout(slideshow, 8000);
slideshow
是undefined
,并且undefined
不是setTimeout
的有效参数。将调用包装在匿名函数中:
var timer = setTimeout(function(){slideshow();}, 8000);
匿名函数将是
setTimeout
的有效参数,并且此函数的内容将在8秒后评估(当定义了slideshow
且为函数时)