JS的背景图像样式不在ie9中工作

时间:2015-06-22 08:57:25

标签: javascript jquery html internet-explorer

我正在网站上工作,我在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);

1 个答案:

答案 0 :(得分:1)

您对setTimeout的调用在任何浏览器中都失败,但在IE9中有异常(停止进一步执行脚本)。

这是一个时间问题。在你打电话的那一刻

var timer = setTimeout(slideshow, 8000);

slideshowundefinedundefined不是setTimeout的有效参数。

以匿名函数包裹呼叫:

var timer = setTimeout(function(){slideshow();}, 8000); 

匿名函数将是setTimeout的有效参数,并且将在8秒后(当slideshow定义并且函数时)评估此函数的内容。