将传统的事件调用替换为 JavaScript 事件侦听器
Replace traditional event call with JavaScript event listener
使用以下代码:
<head>
<script type="text/javascript">
function popupMsg(msg) {
alert(msg);
}
</script>
</head>
<body>
<a href="http://www.example.com" onClick="popupMsg('This is pop up message')">example.com</a>
</body>
如何在锚标记中将onClick
替换为addEventListener
?
可以在不将ID
分配给锚标记的情况下完成吗?
大概是这样的:
<a href="http://www.example.com" something.addEventListener('click',popupMsg(SomeMsg),false)>example.com</a>
我不相信它以这种方式得到支持。你也许可以尝试加载处理程序:
<a href="" onLoad="(function(){ this.addEventListener("click", "fnName", false); })();">Link</a>
上面的代码未经测试。
您可以使用 querySelector(在现代浏览器中)来选择元素:
var anchor = document.querySelector('a')
(这应该选择页面上的第一个链接)
然后附加您的活动:
anchor.addEventListener( ... );
所有这些都不是在元素上内联完成的,这可以说更好......
所以像这样:
<script>
// Function to add event listener to the anchor
function load() {
var anchor = document.querySelector('a')
anchor.addEventListener( ... );
}
document.addEventListener("DOMContentLoaded", load, false);
</script>
浏览器支持在不同"级别"附加事件,这是 W3C 随时间推移设置的标准。通过 DOM 中的"onclick"直接附加事件(即<a href="#" onclick="myFunction()">
级别为 0,或使用 JavaScript 执行相同的操作(即:document.getElementsByTagName('a')[0].onclick = myFunction;
)是级别 1。
级别 0 和 1 的限制是,对于任何类型的事件,任何时候只能将一个事件处理程序附加到每个单独的元素。为了使事件附加更加灵活,级别 2 事件允许为每个元素上的每种类型的事件使用多个事件处理程序,并附加document.getElementsByTagName('a')[0].addEventListener('click', myFunction, true)
.
在两者之间切换的有用指南 http://jupiterjs.com/news/a-crash-course-in-how-dom-events-work。
如果你不想向元素添加ID来附加事件处理程序,jQuery是一个库,它使使用CSS选择器查询DOM变得非常简单(上面的代码会变得jQuery('a').click(myFunction)
) - 更多信息在 http://jquery.com
- 召回窗口加载事件 - javascript
- 动态创建OnClick事件Javascript
- 全局屏幕span onclick触发一个事件javascript
- 使用react js在跨域上执行事件javascript
- 在change事件javascript上动态添加行
- 在粘贴事件Javascript的输入字段中删除所有非数字字符
- 如何在多表单的输入框中使用输入事件javascript
- 无法查看特定信息.单击事件.Javascript
- 两个文本框事件Javascript
- 阻止鼠标滚轮滚动,但不阻止滚动条事件.JavaScript
- 从 onkeydown 事件 (Javascript) 获取当前用户输入
- “稍后提醒我”/“快速事件”JavaScript解决方案
- 更改我正在侦听的事件Javascript的对象的CSS
- setInterval 不允许同时单击事件 - javascript
- 对每种情况使用一个事件(JavaScript 开关)
- 仅创建第二次点击事件 Javascript
- 每 60 秒仅启动一次事件 (JavaScript)
- 如何连接来自不同文件的事件?Javascript/Backbone
- URL 更改事件 - JavaScript
- 无法在无头模式下使用 watir Webdriver 执行按钮元素的 onclick 事件 javascript