javascript方法不在IE中编译,但在运行调试时工作正常

时间:2012-09-25 03:09:56

标签: javascript jquery

我制作了这个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);
    }
}

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

一些注意事项:

将其添加到脚本的最顶层:

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

如果不是,则定义window.console。除了避免错误之外什么都不做。

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

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

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

timeout = window.setTimeout(switchDiv,7000);

我在这里很挑剔,但是:

currentItem = currentItem + 1;currentItem++;

相同

另一个挑剔的事物window.setTimeoutsetTimeout相同。