繁体   English   中英

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

[英]Why can I access asp:TextBox in javascript, but not asp:Label?

这是我在说什么的简单演示

head标签中的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 找到txt1input html 元素)并更改值。 但为什么找不到lblStatusspan html 元素)? 它出现为undefined 它们都是相同的形式。

编辑:问题似乎是在 js 中访问span节点。 我猜你不能像我一样通过表格 object 访问它们。

asp:Label呈现为跨度或 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来获取 object。

使用innerHTML时注意潜在的XSS问题。

ASP:Label不呈现表单元素。 它呈现一个spanlabel 您必须使用 innerHTML 访问该值。 请确保使用 ClientID,因为如果 label 控件不直接位于页面中或使用了母版页,则 ASP.NET 运行时可能会呈现不同的 ID。

var lbl = document.getElementById("<%= lblStatus.ClientID %>");
lbl.innerHTML = "hello world";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM