Javascript Switch函数在未调用时激发,在使用addEventListener时也默认不阻止
我想要一个按钮,显示不同的文本在一个地区取决于是否点击或双击,或没有任何文本,如果没有点击,也右键点击不应该显示任何菜单Javascript Switch函数在未调用时激发,在使用addEventListener时也默认不阻止,javascript,html,switch-statement,addeventlistener,Javascript,Html,Switch Statement,Addeventlistener,我想要一个按钮,显示不同的文本在一个地区取决于是否点击或双击,或没有任何文本,如果没有点击,也右键点击不应该显示任何菜单 <button id='test'>click me</button> <p id='description'></p> 该区域显示“文本编号1”,无论是否单击按钮。右键单击按钮显示默认浏览器菜单。您将立即调用函数尝试切换,这将把函数返回的值(即应答)传递给添加的监听器,而不是传递函数 将函数的调用表达式包装到另一个函数中
<button id='test'>click me</button>
<p id='description'></p>
该区域显示“文本编号1”,无论是否单击按钮。右键单击按钮显示默认浏览器菜单。您将立即调用函数
尝试切换
,这将把函数返回的值(即应答
)传递给添加的监听器
,而不是传递函数
- 将函数的调用表达式包装到另一个函数中李>
- 而且您不需要
返回
description.innerHTML=answer代码>
const descripptrion=document.getElementById('description');
功能尝试开关(val){
让我们回答=“”
开关(val){
案例1:answer=“文本编号1”
打破
案例2:answer=“文本编号2”
打破
默认值:answer=“完全没有”
}
description.innerHTML=答案;
}
const test=document.getElementById('test');
test.addEventListener('click',()=>trySwitch(1));
test.addEventListener('dblclick',()=>trySwitch(2));
test.addEventListener('auxclick',函数(事件){
event.preventDefault()
});代码>
测试
您要调用它两次,在这里:
test.addEventListener('click', trySwitch(1));
test.addEventListener('dblclick', trySwitch(2));
trySwitch(1)
和trySwitch(2)
不是函数,它们是函数调用。传递给addEventListener
的是尝试开关(/*1或2*/)
的计算结果,因此一些字符串,因此单击/dblclick时不会发生任何事情
使trySwitch
成为高阶函数:
function trySwitch(val) {
return function() {
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;
}
}
function trySwitch(val) {
return function() {
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;
}
}