Asp.Net按钮在javascript中没有ID

本文关键字:ID javascript Net 按钮 Asp | 更新日期: 2023-09-27 17:58:10

我在用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,这样我就能很容易地识别按钮,当然还有属于按钮的标签。

我做错了什么?

Asp.Net按钮在javascript中没有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);