以下是我正在谈论的内容的简单演示
头标记中的js:
function changeTxt(frm){
var lblo = frm.txt1;
lblo.value = "hey guy";
var lbl = frm.lblStatus;
lbl.innerHTML = "hello world";
}
aspx / html标记:
<asp:Label ID="lblStatus" runat="server"></asp:Label>
<asp:TextBox ID="txt1" runat="server"></asp:TextBox>
<button onclick="changeTxt(this.form);">go</button>
js找到txt1
(input
html元素)并更改值。但为什么它找不到lblStatus
(span
html元素)?它出现在undefined
。它们都是相同的形式。
编辑:问题似乎是访问js中的span
个节点。我想你不能像我一样通过表单对象访问它们。
答案 0 :(得分:3)
asp:Label
呈现为范围或标签,因此value
不是更改文本的正确方法。您需要使用像innerHTML
这样的东西:
function changeTxt(frm){
var lblo = document.getElementById('<%: txt1.ClientID %>');
lblo.value = "hey guy";
var lbl = document.getElementById('<%: lblStatus.ClientID %>');
lbl.innerHTML = "hello world";
}
您还应该使用getElementById
来获取对象。
使用innerHTML
时,请注意潜在的XSS问题。
答案 1 :(得分:2)
ASP:Label
不会呈现表单元素。它呈现span
或label
。您必须使用innerHTML访问该值。确保使用ClientID,因为如果标签控件不直接在页面中或者使用母版页,则ASP.NET运行库可能会呈现不同的ID。
var lbl = document.getElementById("<%= lblStatus.ClientID %>");
lbl.innerHTML = "hello world";