0

オンラインで見つけた既存のスクリプトから変更したこの JavaScript メソッドを作成しました。このスクリプトは回転して無数の'.testimonial'div を表示する必要があります。スクリプトは chrome と firefox では正常に動作しますが、f12 を使用してスクリプトのデバッグを開始しない限り、Internet Explorer ではコンパイルされません。このスクリプトを記述するより良い方法はありますか? オンラインでアイデアを探しましたが、何も見つかりませんでした。問題は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++;

もう1つのこだわりwindow.setTimeoutは と同じsetTimeoutです。

于 2012-09-25T03:13:31.203 に答える