【问题标题】:HTML/JavaScript "if != " is not working [duplicate]HTML / JavaScript“如果!=”不起作用[重复]
【发布时间】:2014-10-31 13:31:39
【问题描述】:

我想为一个小游戏编写一个带有 Javascript 的 HTML 页面。 我有很多 s 并且每个都在单击时向 javascript 发送不同的变量。 现在的问题是,我想为一个函数排除一些 s,这应该适用于每个 s,除了那些被排除的。

我是这样写的:

if (pressedKey != "Leertaste" || "Enter" || "StrgR" || "Alt" || "AltGr" || "Tab" || "ShiftL" || "StrgL" || "ShiftR"){
    document.getElementById(pressedKey).innerHTML = "<img src=\"push1.png\">"
}

但它不起作用..它仍然触发该功能,尽管pressedKey是被排除的键之一..

希望有人能帮忙。

3m7ecc

【问题讨论】:

  • 是的,你不能像这样链接||,这不是它的工作方式。找到骗子。
  • 如果是 JS,则为 if (a !== 1 || a !== 2 || a !== 3)
  • 值得一提 - 写“我希望有人能提供帮助。3m7ecc”在问题中是多余的。希望骗子有所帮助,编码愉快!

标签: javascript html if-statement


【解决方案1】:

我认为应该是,但我不确定,请尝试一下:):

pressedKey != "Leertaste" || pressedKey != "Enter" || pressedKey != "StrgR" || pressedKey != "Alt" || pressedKey != "AltGr" || pressedKey != "Tab" || pressedKey != "ShiftL" || pressedKey != "StrgL" || pressedKey != "ShiftR"

正如你们中的许多人所说,我使用了错误的分隔符,但这个是问题所在,所以我猜他需要这个。但事实上,他需要:

 pressedKey != "Leertaste" && pressedKey != "Enter" && pressedKey != "StrgR" && pressedKey != "Alt" && pressedKey != "AltGr" && pressedKey != "Tab" && pressedKey != "ShiftL" && pressedKey != "StrgL" && pressedKey != "ShiftR"

【讨论】:

  • 哦,好的,我明白了我的错误.. 谢谢!编辑:但它似乎仍然无法正常工作..
  • 您的表达式将始终计算为真,因为您同时将同一个变量与两个不同的值进行比较,并且您使用 OR 运算符。例如,如果您有一个 var X 和表达式 if (X != 1 || X != 2),即使 X == 1 您的表达式将为真,因为 X != 2。您应该使用 && 而不是 ||
【解决方案2】:

@Deer-Outdoor.nl 的答案几乎是正确的(使用了错误的运算符),如果不雅(无意冒犯!)。您还可以将所有值放入一个数组中,然后检查 pressedKey 是否在该数组中。

var keys = ["Leertaste", "Enter", "StrgR", "Alt", "AltGr", "Tab", "ShiftL", "StrgL", "ShiftR"];

if (keys.indexOf(pressedKey) === -1) {
    //pressed key is not in array
} else {
    //pressed key is in array
}

或者你可以使用 switch 语句:

switch(pressedKey) {
    case "Leertaste":
    case "Enter":
    case "StrgR":
    //...other cases...
         //pressed key is in those values
        break;
   default:
        //pressed key is NOT in those values
        break;
}

它们几乎相同,只是风格问题。

【讨论】:

  • 谢谢!奇怪的是,这个有效,但 @Deer-Outdoor.nl 的无效。
  • 嗯,当然。请参阅@gabitzish 对另一个答案的评论,使用了错误的运算符。我也没看到。 :)
  • @SolarBear 更新了答案。我的回答是基于他认为他需要的,所以这就是我离开 || 的原因。 (或)运营商。更新了我的答案:)
猜你喜欢
  • 2016-06-02
  • 2019-07-08
  • 1970-01-01
  • 2014-04-22
  • 2010-12-22
  • 2013-11-19
  • 1970-01-01
  • 2016-10-23
  • 2017-05-03
相关资源
最近更新 更多