Possible Duplicate:
Any way to prevent master pages from changing element IDs?
你好
我有一个使用母版页的 .net 2.0 网页。有问题的页面上有一个表单,我正在尝试调用其中一个子元素。表单元素名称是:
"contact_label" - its an asp:Label
但是当我查看源代码时,我得到的名称是:
"ctl00_ContentPlaceHolder1_contact_label"
有没有办法绕过这种“名称乱码”?
我读过我应该能够像这样引用它:
document.getElementById("<%= contact_label.ClientID %>")
但这对我也不起作用......
这都是带有 javascript 的 .net 2.0。
谢谢,R。
如果您想使用 javascript,您可以为您的 javascript 创建一些全局变量,以便在您执行任何其他 javascript 调用之前使用该设置。我更喜欢这种方法,因为它减少了您在各处获取控件 ID 所需的内联代码量,并将其全部集中在一个位置。
所以在脚本代码的开头做:
// In your javascript
var myTextBoxId = "<%= myTextBox.ClientID %>";
var myButtonId = "<%= myButton.ClientID %>";
然后在你的 javascript 代码中,只要你需要使用它,你就可以这样做:
var myTextBox = document.getElementById(myTextBoxId);
var myButton = document.getElementById(myButtonId);
使用 Jquery 将使它看起来更干净。例如获取文本框值:
var myTextBoxValue = $("#" + myTextBoxId).val();
// or if you dont want to use the initializers to store the ids
var myTextBoxValue = $("#" + "<%= myTextBox.ClientID %>").val();