1

オブジェクト指向のJavaScriptは初めてです。a)要素がnullかどうかを確認し、そうであれば待機して再度呼び出し、b)ボタンのクリックイベントを観察するセットアップメソッドがあります。

ErrorBox.prototype.setUpErrorBox = function(btnClientID) {
    if (btnClientID == null) {
        setTimeout("setUpErrorBox()", 1000)
        return;
    }
    Event.observe(btnClientID, 'click', setValSummary);
}

setUpErrorBox と setValSummary が存在しない (存在しない) というエラーが表示されます。どうすればそれらを参照できますか? this.setValSummary を試しましたが、うまくいきませんでした。

つまり、javascript で同じクラスの別のメソッドからクラスのメソッドに相当するものを呼び出すにはどうすればよいですか?

4

1 に答える 1

2

クロージャーを使用して、実行コンテキストを保持します。

ErrorBox.prototype.setUpErrorBox = function(btnClientID) 
{
   var box = this; // object context reference
   if (btnClientID == null) 
   {
      // use closure as event handler to maintain context
      setTimeout(function() { box.setUpErrorBox() }, 1000)
      return;
   }
   // again, use closure as event handler to maintain context
   Event.observe(btnClientID, 'click', function() { box.setValSummary() });
}

参照: JavaScript コールバック スコープ

于 2009-02-18T20:50:48.287 に答える