0

我制作了这个 javascript 方法,它是从我在网上找到的现有脚本更改的,该脚本应该旋转显示无限数量的'.testimonial'div。该脚本在 chrome 和 firefox 中运行良好,但不能在 Internet Explorer 中编译,除非您使用 f12 启动脚本的调试。有没有更好的方法来编写这个脚本?我在网上寻找想法,但找不到任何东西。我想问题出在console.log(testimonialCount);声明上,但不确定更好的编写方式。任何帮助将不胜感激。谢谢。

//rotate testimonials script
jQuery('.testimonial').hide();

var testimonialCount = $('.testimonial').length;
console.log(testimonialCount );
var currentItem = 0;
var timeout;
timeout = window.setTimeout((function(){switchDiv();}));    

switchDiv = function() {
    if (currentItem == testimonialCount - 1) {
        jQuery('.testimonial').eq(testimonialCount - 1).hide();
        currentItem = 0;
        jQuery('.testimonial').eq(0).fadeIn();
        timeout = window.setTimeout((function(){switchDiv();}),7000);
    }
    else {
        jQuery('.testimonial').eq(currentItem).hide();
        currentItem = currentItem + 1;
        jQuery('.testimonial').eq(currentItem).fadeIn();
        timeout = window.setTimeout((function(){switchDiv();}),7000);
    }
}
4

2 回答 2

3

IE开发者工具未打开时,没有console对象。
因此,调用console.log()会引发错误。

为防止这种情况,您可以检查if ('console' in window)并制作自己的虚拟控制台(或者不记录任何内容),如果不是的话。

于 2012-09-25T03:11:59.057 回答
2

几点注意事项:

将此添加到脚本的最顶部:

window.console = console || { 'log' : function(){} };

这定义window.console以防万一。除了避免错误,什么都不做。

接下来取出超时函数周围的括号:

timeout = window.setTimeout(function(){ switchDiv(); },7000);

...或者只是进一步简化:

timeout = window.setTimeout(switchDiv,7000);

我在这里很挑剔但是:

currentItem = currentItem + 1;是相同的currentItem++;

另一个挑剔的东西window.setTimeout是一样的setTimeout

于 2012-09-25T03:13:31.203 回答