我在一个网站上工作,即时通讯在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);


slideshowundefined,并且undefined不是setTimeout的有效参数。

将调用包装在匿名函数中:

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


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

07-27 20:50