簡體   English   中英

如何使用 JavaScript 更改 asp 標簽的值?

[英]How to change the value of an asp label with JavaScript?

我正在嘗試在我擁有的面板頂部添加一個錯誤標簽。 我在頁面加載時用 C# 創建了一個按鈕,它調用一個 JavaScript 函數,我想在單擊時在我的面板上顯示一條錯誤消息。

C#:

private void CreateButton(int pID, string changeType)
{
    ASPxButton btn = new ASPxButton();
    btn.Text = "Execute Request";
    btn.ID = "btn" + changeType;
    btn.AutoPostBack = false;
    btn.ClientSideEvents.Click = GetClientSideEventHandler(string.Format("OnProcessRequest(s, e, '{0}','{1}')", pID.ToString(), changeType));
    TableRow oRow = new TableRow();
    TableCell oCell = new TableCell();
    oCell.CssClass = "table-cell";
    oCell.Controls.Add(btn);
    oRow.Cells.Add(oCell);
    tblButtons.Rows.Add(oRow);

}

JS:

function OnProcessRequest$(pID, pChangeType) {
    document.getElementById('errLabel').value = "Test";
}

ASPX:

<asp:Label ID="errLabel" runat="server"/>

當這段代碼運行時,它總是拋出以下錯誤:

錯誤:無法設置未定義或空引用的屬性“值”。

我也試過使用:

document.getElementById('<%=errLabel.ClientID%>').value = "Test";

但這也會引發錯誤。

在JS中單擊此按鈕時如何更改此標簽的值?

如果您可以使用該屬性,請嘗試將 ClientIDMode="Static" 添加到您的標簽中。 或者您可以添加 ClientID="errLabel" 作為替代。 發生的事情是 asp.net 會自動為您的字段提供一個生成的 id 用於在客戶端關閉,因此它不會匹配您的 id“errLabel”。

    <asp:Label runat="server" ID="errLabel" ClientIDMode="Static"></asp:Label>

或者

    <asp:Label runat="server" ID="errLabel" ClientID="errLabel"></asp:Label>

https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.control.clientidmode?view=netframework-4.8#System_Web_UI_Control_ClientIDMode

好的,要在 JavaScript 中更改 asp.net 標簽,您可以這樣做:

(我們假設您設置了標簽客戶端 ID 模式>

所以,如果我們在頁面上有標簽,你可以這樣做:

<asp:Label ID="Label1" runat="server" Text="" ClientIDMode="Static"></asp:Label>

上面要更改的 JavaScript 是這樣的:

 var lbl = document.getElementById('<%=Label1.ClientID%>');

 lbl.innerText = "Js lable text changed";

或者

 lbl.innerHTML = "<h2>this is some big text by js</h2>"

對大小寫要非常小心,對 get 元素中的額外空格等要非常小心。

另外,不要忘記在標簽中包含 Text="" !!! (你錯過了這個!!!)。

JavaScript 非常古怪——一個小小的錯誤動作,它就會翻身回家。 (瀏覽器中的調試器相當於去看牙醫)。

您也可以使用 jQuery。

上面的內容變成了這樣:

var lbl = $('#Label1');
lbl1.text("js jquery text change");

現在,讓我們對文本框做同樣的事情。

我們的 asp.net 文本框:

<asp:TextBox ID="TextBox1" runat="server" ClientIDMode="Static" ></asp:TextBox>

JavaScript:

var txt = document.getElementById('<%=TextBox1.ClientID%>');
txt.value = "This is js text for text box";

作為 jQuery:

var txt = $('#TextBox1');
txt.val("js jquery text for the text box");

那么,對於asp.net 標簽? 您使用innerText 或innerHTML。 (或 text("your text here") with jQuery)

使用 jQuery,您可以使用 .value 而不使用 ()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM