Javascript 单击事件:开关语句不工作
我试图根据点击的变量触发多个点击事件,但是switch语句不起作用。我认为这是开关参数中的“var”,但我不知道如何纠正它:Javascript 单击事件:开关语句不工作,javascript,Javascript,我试图根据点击的变量触发多个点击事件,但是switch语句不起作用。我认为这是开关参数中的“var”,但我不知道如何纠正它: var buttonQ = document.getElementById('Heater1button'); var buttonW = document.getElementById('Heater2button'); var buttonE = document.getElementById('Heater3button'); var buttonA = docum
var buttonQ = document.getElementById('Heater1button');
var buttonW = document.getElementById('Heater2button');
var buttonE = document.getElementById('Heater3button');
var buttonA = document.getElementById('Heater4button');
var buttonS = document.getElementById('Heater6button');
var buttonD = document.getElementById('OpenHHbutton');
var buttonZ = document.getElementById('KicknHat');
var buttonX = document.getElementById("Kickbutton");
var buttonC = document.getElementById('CClosedHHbutton');
$(document).click(function() {
switch (var) {
case buttonQ:
document.getElementById('Q').play(), $("#displaytext").text("Heater 1")
break;
case buttonW:
document.getElementById('W').play(), $("#displaytext").text("Heater 2")
break;
case buttonE:
document.getElementById('E').play(), $("#displaytext").text("Heater 3")
break;
case buttonA:
document.getElementById('A').play(), $("#displaytext").text("Heater 4")
break;
case buttonS:
document.getElementById('S').play(), $("#displaytext").text("Heater 6")
break;
case buttonD:
document.getElementById('D').play(), $("#displaytext").text("Open HH")
break;
case buttonZ:
document.getElementById('Z').play(), $("#displaytext").text("KicknHat")
break;
case buttonX:
document.getElementById('X').play(), $("#displaytext").text("Kick")
break;
case buttonC:
document.getElementById('C').play(), $("#displaytext").text("Closed HH")
break;
}
})
没错,问题在于switch语句中的
var
。这是指什么变量?switch语句用于“检查A的结果并执行x、y等操作之一”。在您的示例中,我没有看到任何名为“var
”的值的声明,开关正在使用该值来评估要运行的案例
在任何情况下,即使您的代码中有一个名为
var
的变量,它也不会工作,因为这是一个保留字。您不能使用用于命名变量的单词命名变量。您是正确的,问题在于switch语句中的var
。这是指什么变量?switch语句用于“检查A的结果并执行x、y等操作之一”。在您的示例中,我没有看到任何名为“var
”的值的声明,开关正在使用该值来评估要运行的案例
在任何情况下,即使您的代码中有一个名为
var
的变量,它也不会工作,因为这是一个保留字。您不能使用用于命名变量的单词来命名变量。您不应该使用开关
语句,而是使用附加到每个元素的事件侦听器
buttonQ.addEventListener("click", function() {
document.getElementById('Q').play(), $("#displaytext").text("Heater 1");
});
buttonW.addEventListener("click", function() {
document.getElementById('W').play(), $("#displaytext").text("Heater 2");
});
依此类推所有按钮。您不应该使用
开关
语句,而是使用附加到每个元素的事件侦听器
buttonQ.addEventListener("click", function() {
document.getElementById('Q').play(), $("#displaytext").text("Heater 1");
});
buttonW.addEventListener("click", function() {
document.getElementById('W').play(), $("#displaytext").text("Heater 2");
});
依此类推所有按钮。您正在打开var,从您提供的代码来看,var本身似乎不存在。您需要知道单击了什么,因此需要使用jQuery.click()方法提供的内容——“this”。或者在您的情况下,您应该打开$(this.attr(“id”)
请参见:您正在打开var,从您提供的代码来看,var本身似乎不存在。您需要知道单击了什么,因此需要使用jQuery.click()方法提供的内容——“this”。或者在您的情况下,您应该打开$(this.attr(“id”) 看到了吗:像这样的东西
$(文档)。单击(函数(e){
var id=e.target.id;
开关(id){
外壳“加热器1按钮”:
document.getElementById('Q').play(),$(“#displaytext”).text(“加热器1”)
打破
外壳“加热器2按钮”:
document.getElementById('W').play(),$(“#displaytext”).text(“加热器2”)
打破
}
});像这样的代码
$(文档)。单击(函数(e){
var id=e.target.id;
开关(id){
外壳“加热器1按钮”:
document.getElementById('Q').play(),$(“#displaytext”).text(“加热器1”)
打破
外壳“加热器2按钮”:
document.getElementById('W').play(),$(“#displaytext”).text(“加热器2”)
打破
}
});代码>谢谢你的回答。我如何让switch语句对声明的变量求值并运行预期代码?@HernanAriel“预期代码”是什么还不清楚。您是否试图根据用户单击的按钮执行不同的代码?使用事件侦听器,而不是开关。@Barmar是的,这正是我想要做的。在这种情况下,事件侦听器将如何工作?就像开关一样?谢谢你的回答。我如何让switch语句对声明的变量求值并运行预期代码?@HernanAriel“预期代码”是什么还不清楚。您是否试图根据用户单击的按钮执行不同的代码?使用事件侦听器,而不是开关。@Barmar是的,这正是我想要做的。在这种情况下,事件侦听器将如何工作?就像开关一样?正是我想要的!谢谢正是我想要的!谢谢