点击事件:switch语句不起作用

时间:2018-10-10 22:58:56

标签: javascript

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

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;
  }
})

4 个答案:

答案 0 :(得分:2)

您不应使用switch语句,而应将事件监听器附加到每个元素上。

buttonQ.addEventListener("click", function() {
    document.getElementById('Q').play(), $("#displaytext").text("Heater 1");
});
buttonW.addEventListener("click", function() {
    document.getElementById('W').play(), $("#displaytext").text("Heater 2");
});

依次选择所有按钮。

答案 1 :(得分:0)

您是正确的,问题出在switch语句内的var。这指的是什么变量? switch语句用于“检查 a 的结果,并执行 x y 等之一。在您的示例中,我看不到开关用于评估要运行的大小写的任何名为“ var”的声明。

无论如何,即使您在代码中的其他位置确实有一个名为var的变量,它也不起作用,因为这是一个保留字。您不能使用用于命名变量的单词来命名变量。

答案 2 :(得分:0)

您正在打开var,它本身在您提供的代码中似乎不存在。您需要知道单击了什么,因此需要使用jQuery .click()方法提供的内容-“ this”。或者,您可能应该打开$(this).attr(“ id”)。

查看此内容:https://api.jquery.com/click/

答案 3 :(得分:0)

像这样吗?

$(document).click(function(e) {
var id = e.target.id;
  switch (id) {
    case "Heater1button":
      document.getElementById('Q').play(), $("#displaytext").text("Heater 1")
      break;
    case "Heater2button":
      document.getElementById('W').play(), $("#displaytext").text("Heater 2")
      break;
  }
});