.aspx页面 - 在pageLoad()中使用document.getElementById

时间:2012-08-23 17:47:22

标签: javascript asp.net

在使用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";
  } 

2 个答案:

答案 0 :(得分:4)

我会避免使用全局变量并执行此操作:

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

答案 1 :(得分: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时,您只有一个位置。