并感谢您的期待。如何将参数添加到JavaScript中的事件处理程序中?
目前我正在执行代码this的例子。在我的aspx文件中,我定义了Label1和Textbox1。在我的aspx.cs文件中,我将Label1.Text属性设置为Page_Load方法中的一个随机字符串。
在我已经包括.js文件,我有:
var Label1, TextBox1;
Sys.Application.add_init(AppInit);
function AppInit(sender) {
Label1 = $get('Label1');
TextBox1 = $get('TextBox1');
$addHandler(Label1, "click", Label1_Click);
$addHandler(TextBox1, "blur", TextBox1_Blur);
$addHandler(TextBox1, "keydown", TextBox1_KeyDown);
}
现在,我想添加更多标签(以及相应的文本框),但我不想定义每个单独的处理器的开销其他事件,即我想避免这种情况:
$addHandler(Label1, "click", Label1_Click);
$addHandler(TextBox1, "blur", TextBox1_Blur);
$addHandler(TextBox1, "keydown", TextBox1_KeyDown);
$addHandler(Label2, "click", Label2_Click);
$addHandler(TextBox2, "blur", TextBox2_Blur);
$addHandler(TextBox2, "keydown", TextBox2_KeyDown);
...
我如何传递一个参数,将准确地识别发件人的处理程序,并有处理程序使用“这个”什么的。另外值得注意的是,我希望能够识别标签的索引(1,2,3 ...),因为我也必须编辑相应的文本框。例如,Label1_Click的当前实现如下所示:
function Label1_Click() {
TextBox1.value = Label1.innerHTML;
Label1.style.display = 'none';
TextBox1.style.display = '';
TextBox1.focus();
TextBox1.select();
}
谢谢,你们。
仅供参考 - 它看起来像你正在使用微软的客户端库。据MS称,他们正在将其客户端开发工作转向jQuery(http://stephenwalther.com/blog/archive/2010/03/16/microsoft-jquery-and-templating.aspx)。虽然你试图做的事情会起作用,但我会建议给jQuery一个镜头,除非你正在开发一个服务器控件。 – dana 2010-08-24 17:52:40