JavaScript中如何通过按钮onclick调用两个函数?仅第二个执行
问题原因
直接给onclick重复赋值会覆盖之前的函数——onclick本质是一个属性,每次赋值都会替换掉之前的引用,所以最后只有results会执行。
解决方案
方案1:用匿名函数包裹两个函数调用
把两个函数放在一个匿名函数里,一次性赋值给onclick,点击时会依次执行两个函数:
const resultButton = document.getElementById("result"); resultButton.onclick = function() { reset(); results(); };
或者用ES6箭头函数简化写法:
const resultButton = document.getElementById("result"); resultButton.onclick = () => { reset(); results(); };
方案2:使用addEventListener绑定多个监听器(推荐)
这是更标准的事件绑定方式,支持给同一个事件添加多个处理函数,不会互相覆盖,执行顺序和绑定顺序一致:
const resultButton = document.getElementById("result"); resultButton.addEventListener('click', reset); resultButton.addEventListener('click', results);
如果后续需要单独移除某个函数的监听,还可以用removeEventListener,比如:
resultButton.removeEventListener('click', reset);
内容的提问来源于stack exchange,提问作者TTN18
相关产品推荐
相关产品推荐

