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

我将创建一个具有每个控件属性的全局对象。

这种方法在每个函数中的问题:

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 时,您只有一个位置。

于 2012-08-23T17:52:57.800 回答