0

まず、私はJavascriptのOOP側にあまり精通していないので、描画ボードに戻ってjavascriptを書き直す必要があるかもしれません。これは、私がやろうとしていることが不可能な場合があるためです。その場合はお知らせください。そうです。私はしばらくの間これの解決策を探していましたが、私が何を変えるべきかを理解できる方法で同じ問題を完全に見つけることができません。

私はこの投稿で定義されたクラスを使用しています:https ://stackoverflow.com/a/7798773/1027442 。

サイトでコンボボックスが変更されると(onChange)、以下の関数を呼び出す関数が呼び出され、ページにフィードバックボックスが表示されます。

var display_ajax_feedback = function (){

document.getElementById('ajax_feedback').style.display = 'block';

/*if(document.getElementById('ajax_feedback_active').value == "active"){*/
if(timer){
    timer.add(5000);
    }
else{
    var timer = new Timer(function() { // init timer with 5 seconds
            document.getElementById('ajax_feedback').style.display = 'none';
        }, 5000);

    /*document.getElementById('ajax_feedback_active').value ="active";*/
    }

}

「ajax_feedback」要素が5秒間表示されてから消えます。ただし、再度呼び出された場合は5秒が追加されます。

このコードを使用する場合、if(timer)行は常にfalseを返すため、タイマーは時間を追加せずにオブジェクトを再度呼び出します。

timer.addメソッドを強制的に呼び出すために追加のajax_feedback_active要素を導入しましたが、次のエラーが発生します:「UncaughtTypeError:Undefinedのメソッド'add'を呼び出せません」

私が明らかにこれで間違っていることはありますか?および/またはクイックフィックス、またはこれに対する私のアプローチを再考する必要がありますか?

さらに詳しい情報が必要な場合はお知らせください。

よろしくお願いします、リチャード

4

1 に答える 1

0

タイマーは関数スコープ内の変数です。varその関数へのグローバル参照を作成する場合は、その関数からタイマーを削除するか、そのキーワードを取り除きます。

于 2012-05-20T10:26:36.007 に答える