我正在网站上工作,我在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);
答案 0 :(得分:1)
您对setTimeout
的调用在任何浏览器中都失败,但在IE9中有异常(停止进一步执行脚本)。
这是一个时间问题。在你打电话的那一刻
var timer = setTimeout(slideshow, 8000);
slideshow
为undefined
,undefined
不是setTimeout
的有效参数。
以匿名函数包裹呼叫:
var timer = setTimeout(function(){slideshow();}, 8000);
匿名函数将是setTimeout
的有效参数,并且将在8秒后(当slideshow
定义并且函数时)评估此函数的内容。