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,这样我就能很容易地识别按钮,当然还有属于按钮的标签。
我做错了什么?
您可以使用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);