gpt4 book ai didi

javascript - 有没有一种方法可以在不将事件处理程序添加到标记或使用 addEvent 的情况下用 JavaScript 编写事件处理程序?

转载 作者:行者123 更新时间:2023-11-30 10:21:22 25 4
gpt4 key购买 nike

有没有一种方法可以在不使用 addEventListenerclick="eventHandler()" 的情况下仅通过元素在 JavaScript 中的 ID 添加事件监听器?我依稀记得一种使用元素 id 的方法。

例如,这里有两种方法可以为我不感兴趣的按钮添加事件监听器:

<input id="myButton" type="button" onclick="doSomething()" />

这是另一个:

myButton.attatchEvent("click", doSomething());

目前对以上两种方法不感兴趣。我正在寻找的是这样的:

function myButton_clickHandler(event) {
alert("hello world");
}

在上面的代码中,浏览器知道该事件是针对“myButton”的。

我试图解决这个问题的原因是为了研究。我记得在 IE 中做过类似的事情。


更新


我做了更多研究,发现它可能是 Microsoft 独有的功能集类型,在其文档中以“隐式事件处理程序”、“”的名称引用基于签名的处理程序”和“AutoEventWireup”。这些示例适用于 ASP.NET。


第一个例子:

为页面事件创建处理程序

  1. 在代码编辑器中,创建一个名为 Page_event 的方法。

  2. 例如,要为页面的 Load 事件创建一个处理程序,请创建一个名为 Page_Load 的方法。

注意:页面事件处理程序不需要像其他控件事件处理程序那样采用参数。

ASP.NET 页面自动将页面事件绑定(bind)到名为 Page_event 的方法。此自动绑定(bind)由 @Page 指令中的 AutoEventWireup 属性配置,默认设置为 true。如果将 AutoEventWireup 设置为 false,页面不会自动搜索使用 Page_event 命名约定的方法。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack Then
Response.Write("<br>Page has been posted back.")
End If
End Sub

第二个例子:

在 Visual Basic 中隐式添加事件处理程序

  1. 在代码编辑器中,创建具有适当签名的事件处理方法。该方法可以任意命名。

  2. 使用 Handles 关键字,指定该方法应绑定(bind)到的控件和事件。

以下代码示例显示了名为 SampleButton 的按钮的 Click 事件的事件处理程序。示例中的方法名为 Clicked。

Protected Sub SampleButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles SampleButton.Click
' Code goes here.
End Sub

来源:http://msdn.microsoft.com/en-us/library/6w2tb12s%28v=vs.90%29.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

最佳答案

为了回应您的评论,我编写了以下代码。对于每个带有下划线的函数,该函数会找到其 ID 与下划线之前的函数名称部分匹配的 DOM 元素,并将该函数作为 onclick 处理程序提供给它。

(function() {
var e, prop;
for(prop in window) {
if(prop.indexOf("_") < 0 || typeof window[prop] !== "function") continue;
e = document.getElementById(prop.split("_")[0]);
if(typeof e !== "undefined") {
e.onclick = window[prop];
}
}
})();

粘贴上面的代码,你就可以做你在问题中描述的事情,即附加一个这样的事件:

function myButton_clickHandler(event) {
alert("hello world");
}

myButton 是您的按钮的 ID。这只有在 ID 是唯一的情况下才能正常工作。

关于javascript - 有没有一种方法可以在不将事件处理程序添加到标记或使用 addEvent 的情况下用 JavaScript 编写事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21372021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com