在使用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";
}
答案 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时,您只有一个位置。