Javascript 单击事件:开关语句不工作

Javascript 单击事件:开关语句不工作,javascript,Javascript,我试图根据点击的变量触发多个点击事件,但是switch语句不起作用。我认为这是开关参数中的“var”,但我不知道如何纠正它: var buttonQ = document.getElementById('Heater1button'); var buttonW = document.getElementById('Heater2button'); var buttonE = document.getElementById('Heater3button'); var buttonA = docum

我试图根据点击的变量触发多个点击事件,但是switch语句不起作用。我认为这是开关参数中的“var”,但我不知道如何纠正它:

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是的,这正是我想要做的。在这种情况下,事件侦听器将如何工作?就像开关一样?正是我想要的!谢谢正是我想要的!谢谢