簡體   English   中英

Asp.Net按鈕在javascript中沒有ID?

[英]Asp.Net button has no ID in javascript?

我在識別javascript中的asp.net控件時遇到一些問題。 這是我的代碼的一個簡單變體,也許您會看到一個錯誤。

此函數創建一組按鈕+標簽,可以多次調用:

    private void AddRow(Panel pnl)
    {
        var myButton = new Button();
        myButton.Text = "+";
        myButton.Attributes.Add("onclick", "return MyJavascript();");
        myButton.Attributes.Add("somevariable", "FOOBAR!");

        var lblAnzahl = new Label();

        pnl.Controls.Add(myButton);
        pnl.Controls.Add(lblAnzahl);
    }

這是按鈕調用的JS函數:

            function MyJavascript(e) {
                var sender = event.target || event.srcElement;
                var somevar = sender.getAttribute("somevariable");
                alert('somevar: ' + somevar);
                alert('ID: ' + sender.id);
            }

輸出為:

somevar:FOOBAR!

ID:

所以我想我得到了正確的發件人,但是由於某種原因,該ID始終為空。 對我來說,最簡單的方法是,如果我可以某種方式設置按鈕的ID並自己標記,以便每次調用AddRow()時都可以為其指定一個唯一的ID,這樣我就可以輕松地識別按鈕和標簽屬於按鈕。

我究竟做錯了什么?

您可以使用myButton.ClientID或添加名稱屬性myButton.Attributes.Add("name", "FOOBAR"); 進行檢查以確保名稱唯一,並通過getElementByName在Javascript中檢索

您沒有在AddRow函數中設置ID。

將功能更改為此:

private void AddRow(Panel pnl, int index)
{
    var myButton = new Button();
    myButton.ID = "button_" + index; // add this line (the index will guarantee a distinct ID)
    myButton.Text = "+";
    myButton.Attributes.Add("onclick", "return MyJavascript();");
    myButton.Attributes.Add("somevariable", "FOOBAR!");

    var lblAnzahl = new Label();

    pnl.Controls.Add(myButton);
    pnl.Controls.Add(lblAnzahl);
}

您可以像這樣調用代碼:

AddRow(pnl, 0);
AddRow(pnl, 1);
AddRow(pnl, 2);

暫無
暫無

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

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