【问题标题】:Using JavaScript operators in a switch statement with event.code [duplicate]在带有 event.code 的 switch 语句中使用 JavaScript 运算符 [重复]
【发布时间】:2020-03-03 00:48:26
【问题描述】:

我有一个switch 语句,我在其中尝试将键盘快捷键映射到水平整页滚动:

  • 空格键Page Down右箭头 向前滚动
  • Page UpLeft Arrow 滚动 向后
  • HomeUp Arrow 转到开头 页面的
  • EndDown Arrow 滚动到末尾 页面的

这是我的尝试,但不起作用:

switch (event.code) {
  case "Space" || "PageDown" || "ArrowRight": {
    scrollAmount += window.innerWidth
    break
  }
  case "PageUp" || "ArrowLeft": {
    scrollAmount -= window.innerWidth
    break
  }
  case "Home" || "ArrowUp": {
    scrollAmount = 0
    break
  }
  case "End" || "ArrowDown": {
    scrollAmount = container.scrollWidth
    break
  }
}

在这种情况下如何正确使用运算符?

【问题讨论】:

  • 使用 switch 语句的贯穿功能。匹配的 case 将一直运行,直到找到 break(或 switch 语句的结尾)。您需要定义所有情况。
  • 我在问题被关闭之前输入了我的答案作为重复。无论如何,我想通过 codepen 分享它:codepen.io/Connum/pen/JjjLVKJ?editors=1111

标签: javascript ecmascript-6 switch-statement


【解决方案1】:

你应该specify each case separately:

switch (event.code) {
  case "Space":
  case "PageDown":
  case "ArrowRight": {
    scrollAmount += window.innerWidth
    break
  }
  case "PageUp":
  case "ArrowLeft": {
    scrollAmount -= window.innerWidth
    break
  }
  case "Home":
  case "ArrowUp": {
    scrollAmount = 0
    break
  }
  case "End":
  case "ArrowDown": {
    scrollAmount = container.scrollWidth
    break
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-25
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2014-07-31
    • 1970-01-01
    • 2014-09-08
    相关资源
    最近更新 更多