gpt4 book ai didi

javascript - 开关函数在未调用时触发,默认情况下在使用 addEventListener 时也不会阻止

转载 作者:行者123 更新时间:2023-11-30 14:02:58 24 4
gpt4 key购买 nike

我想要一个按钮,它根据单击或双击在一个区域中显示不同的文本,或者如果没有单击则根本不显示文本,而且右键单击不应该显示任何菜单。


<button id='test'>click me</button>
<p id='description'></p>

const descriptrion = document.getElementById('description');

function trySwitch(val){
let answer=""
switch(val) {
case 1: answer="text number one"
break;
case 2: answer="text number two"
break;
default: answer= "literally nothing"
}
return description.innerHTML= answer;
}
const test = document.getElementById('test');

test.addEventListener('click', trySwitch(1));
test.addEventListener('dblclick', trySwitch(2));
test.addEventListener('auxclick', function(event){
event.preventDefault()
});

无论按钮被双击还是根本没有被点击,该区域都会显示“第一文本”。右键单击按钮显示默认浏览器菜单。

最佳答案

您立即调用函数 trySwitch 这会将函数返回的值(即 answer)传递给 addEventListener 而不是传递一个功能。

  • 将函数的调用表达式包装在另一个函数中。
  • 而且你不需要return description.innerHTML = answer;

const descriptrion = document.getElementById('description');

function trySwitch(val){
let answer=""
switch(val) {
case 1: answer="text number one"
break;
case 2: answer="text number two"
break;
default: answer= "literally nothing"
}
description.innerHTML= answer;
}
const test = document.getElementById('test');

test.addEventListener('click', () => trySwitch(1));
test.addEventListener('dblclick', () => trySwitch(2));
test.addEventListener('auxclick', function(event){
event.preventDefault()
});
<div id='description'></div>
<button id="test">Test</button>

关于javascript - 开关函数在未调用时触发,默认情况下在使用 addEventListener 时也不会阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55982698/

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