为什么我可以访问javascript中的asp:TextBox,而不能访问asp:Label?

为什么我可以访问javascript中的asp:TextBox,而不能访问asp:Label?,javascript,asp.net,Javascript,Asp.net,下面是我所说内容的简单演示 头标签中的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>

下面是我所说内容的简单演示

头标签中的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元素)?它显示为
未定义
。它们的形状都一样


编辑:问题似乎是访问js中的
span
节点。我猜您无法像我一样通过表单对象访问它们。

asp:Label
呈现为span或Label,因此
不是更改文本的正确方法。您需要像这样使用
innerHTML

function changeTxt(frm){
    var lblo = document.getElementById('<%: txt1.ClientID %>');
    lblo.value = "hey guy";

    var lbl = document.getElementById('<%: lblStatus.ClientID %>');
    lbl.innerHTML = "hello world";
}
函数更改TXT(frm){
var lblo=document.getElementById(“”);
lblo.value=“嘿,伙计”;
var lbl=document.getElementById(“”);
lbl.innerHTML=“你好世界”;
}
您还应该使用
getElementById
获取对象


使用
innerHTML

时,请注意潜在的问题
ASP:Label
不会呈现表单元素。它呈现
span
标签。您必须使用innerHTML访问该值。请确保使用ClientID,因为如果标签控件不直接位于页面中或使用母版页,ASP.NET运行时可能会呈现不同的ID

var lbl = document.getElementById("<%= lblStatus.ClientID %>");
lbl.innerHTML = "hello world";
var lbl=document.getElementById(“”);
lbl.innerHTML=“你好世界”;

asp:Label呈现什么HTML?IIRC它只输出一个
标记,甚至可能只是一个
它输出一个
,除非您设置
AssociatedControlID
属性,在这种情况下,它输出一个
。frm似乎是对表单元素的引用。如果是这样,这就行不通了。此外,ClientID还应用于访问JS中的元素,因为呈现的ID可能会根据控件所在的位置而变化。
var lbl=frm.lblStatus是否显示为未定义?它仍然不起作用。您不能访问
@碎纸机,因为amit\u g正确地指出您应该使用
document.getElementById
来获取DOM对象。@amit\u g您是正确的!为什么不能像
input
elements can那样通过表单对象访问span元素?只是好奇,因为它们有不同的API。如果元素具有ID,则可以使用getElementById访问该元素。此外,还可以使用form.ElementName或form[ElementName]访问form元素。您的方法正在工作,因为默认情况下ASP.NET将ID和名称呈现为相同的(同样,只要元素不在usercontrol或masterpage中)。