如何用原生 JavaScript 给一个按钮绑定两个 onclick 事件?
常见事件类型
onclick
ondbclick
onmouseover
onmouseout
onfocus
onblur
onmousemove
onmousedown
onmouseup
onmouseenter
onmouseleave
注册事件有两种语法
1.点语法:
- 语法:事件源.事件类型=事件处理函数
box.onclick=fuction (){}
- 特点:不能 注册多个同名事件
注册点击事件
<body>
<button class="btn">按钮</button>
<script>
let btn = document.querySelector('.btn')
btn.onclick = function () {
alert('我是点语法注册的事件-1')//点击有弹出框
}
</script>
</body>
移除点击事件 事件源.onclick=null
<body>
<button class="btn">按钮</button>
<script>
let btn = document.querySelector('.btn')
btn.onclick = function () {
alert('我是点语法注册的事件-1')//没有弹出框
}
btn.onclick=null
</script>
</body>
移除事件:变量赋值的原理,先销毁旧值,然后存入新值
无法注册同名点击事件
<body>
<button class="btn">按钮</button>
<script>
let btn = document.querySelector('.btn')
btn.onclick = function () {
alert('我是点语法注册的事件-1')//第一个不会弹出
}
btn.onclick = function () {
alert('我是点语法注册的事件-2')//只会弹出第二个
}
</script>
</body>
注意,点语法是不能注册多个同名事件的
2.addEventListener()
- 语法:事件源.addEventListener('事件类型',事件处理函数)
- 特点:可以 注册多个同名事件
注册点击事件(可以注册同名点击事件)
<body>
<button class="btn1">按钮</button>
<script>
let btn1 = document.querySelector('.btn1')
btn1.addEventListener('click', function () {
alert('我是addEventListener语法注册的事件-1')//先弹出第一个
});
btn1.addEventListener('click', function () {
alert('我是addEventListener语法注册的事件-2')//接着弹出第二个
});
</script>
</body>
移除点击事件事件源.removeEventListener('事件类型',事件处理函数)
<body>
<button class="btn2">按钮</button>
<script>
let btn2 = document.querySelector('.btn2')
let fn = function () {
alert('我是addEventListener语法注册的具名事件')//不会弹出框
}
btn2.addEventListener('click', fn)
btn2.removeEventListener('click',fn)
</script>
</body>
注意:只能移除具名事件,无法移除匿名事件
转载自:https://juejin.cn/post/7064456797479321636