1

AJax を使用して .net Web アプリケーションを作成する場合、常にグローバル変数を使用して pageLoad() 関数内にコントロールを格納する必要がありますか?

例 -

  var x;
  var y;

  function pageLoad() {

            x = document.getElementById("<%= cboX.ClientID %>");
            y = document.getElementById("<%= tbxY.ClientID %>");  
  }

  function doStuff1() {

            x.enabled = false;
            y.style.visibility = "visible";
  } 

または、場合によってはこれを行う必要があります-

    function doStuff2() {

            document.getElementById("<%= cboX.ClientID %>").enabled = false;
            document.getElementById("<%= tbxY.ClientID %>").style.visibility = "visible";
  } 
4

2 に答える 2

4

私はグローバルを避けてこれを行います:

function doStuff2() {
    document.getElementById("<%= cboX.ClientID %>").enabled = false;
    document.getElementById("<%= tbxY.ClientID %>").style.visibility = "visible";
} 
于 2012-08-23T17:48:36.363 に答える
2

各コントロールのプロパティを持つ 1 つのグローバル オブジェクトを作成します。

すべての関数におけるこのアプローチの問題:

function doStuff2() {
    document.getElementById("<%= cboX.ClientID %>").enabled = false;
    document.getElementById("<%= tbxY.ClientID %>").style.visibility = "visible";
}

コードビハインドでコントロールの名前を変更するときに、JavaScript を自動的にリファクタリングできないということです。

これを行う場合:

var Controls = {};

function pageLoad() {

        Controls.x = document.getElementById("<%= cboX.ClientID %>");
        Controls.y = document.getElementById("<%= tbxY.ClientID %>");  
}

function doStuff1() {

        Controls.x.enabled = false;
        Controls.y.style.visibility = "visible";
} 

その場合、文字列でクライアント ID を参照している場所は 1 つしかありません。

于 2012-08-23T17:52:57.800 に答える