3

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

头标签中的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 找到txt1inputhtml 元素)并更改值。但是为什么找不到lblStatusspanhtml 元素)?它作为undefined. 它们都是相同的形式。

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

4

2 回答 2

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

于 2012-04-10T19:05:07.290 回答
2

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

var lbl = document.getElementById("<%= lblStatus.ClientID %>");
lbl.innerHTML = "hello world";
于 2012-04-10T19:05:54.530 回答