为了账号安全,请及时绑定邮箱和手机立即绑定

为什么第二个 else if 语句不执行,而是执行第一个?

为什么第二个 else if 语句不执行,而是执行第一个?

缥缈止盈 2023-07-20 14:53:16
我有一个问题,当满足要求时执行第二个 else if 语句。它执行第一个“if”语句?我不知道为什么它不起作用。它执行checkleeftijd1();而不是checkleeftijd5();先感谢您!function controle1() {    let symptoominv1 = document.getElementById("symptoominv1").value;    let symptoominv2 = document.getElementById("symptoominv2").value;    let symptoominv3 = document.getElementById("symptoominv3").value;    if (symptoominv1 == "koorts" || symptoominv1 == "keelpijn" || symptoominv1 == "vermoeidheid" || symptoominv1 == "diarree" || symptoominv1 == "hoofdpijn" && symptoominv2 == "koorts"|| symptoominv2 == "keelpijn" || symptoominv2 == "vermoeidheid" || symptoominv2 == "diarree" || symptoominv2 == "hoofdpijn"){        if (symptoominv3 == "koorts" || symptoominv3 == "keelpijn" || symptoominv3 == "vermoeidheid" || symptoominv3 == "diarree" || symptoominv3 == "hoofdpijn"){            checkleeftijd1();        }else {            checkleeftijd2();        }    }else if (symptoominv1 != "koorts" || symptoominv1 != "keelpijn" || symptoominv1 != "vermoeidheid" || symptoominv1 != "diarree" || symptoominv1 != "hoofdpijn" && symptoominv2 == "koorts"|| symptoominv2 == "keelpijn" || symptoominv2 == "vermoeidheid" || symptoominv2 == "diarree" || symptoominv2 == "hoofdpijn") {        if (symptoominv3 == "koorts" || symptoominv3 == "keelpijn" || symptoominv3 == "vermoeidheid" || symptoominv3 == "diarree" || symptoominv3 == "hoofdpijn"){            checkleeftijd3();        }else {            checkleeftijd4();        }
查看完整描述

2 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

并且位于之前或优先 - 所以你在第一个 if 中所拥有的实际上是(注意周围的括号(symptoominv1 == "hoofdpijn" && symptoominv2 == "koorts")

(symptoominv1 == "koorts" || symptoominv1 == "keelpijn" || symptoominv1 == "vermoeidheid" || symptoominv1 == "diarree" || (symptoominv1 == "hoofdpijn" && symptoominv2 == "koorts") || symptoominv2 == "keelpijn" || symptoominv2 == "vermoeidheid" || symptoominv2 == "diarree" || symptoominv2 == "hoofdpijn")

因此,只有“或”之一需要为真,代码才能进入 if 而不会继续执行其余语句。使用括号确保顺序符合您的预期:

if ((symptoominv1 == "koorts" || symptoominv1 == "keelpijn" || symptoominv1 == "vermoeidheid" || symptoominv1 == "diarree" || symptoominv1 == "hoofdpijn") && (symptoominv2 == "koorts" || symptoominv2 == "keelpijn" || symptoominv2 == "vermoeidheid" || symptoominv2 == "diarree" || symptoominv2 == "hoofdpijn"))

对于第一个和第二个 else 也是如此,如果:

else if ((symptoominv1 != "koorts" || symptoominv1 != "keelpijn" || symptoominv1 != "vermoeidheid" || symptoominv1 != "diarree" || symptoominv1 != "hoofdpijn") && (symptoominv2 == "koorts"|| symptoominv2 == "keelpijn" || symptoominv2 == "vermoeidheid" || symptoominv2 == "diarree" || symptoominv2 == "hoofdpijn"))

else if((symptoominv1 == "koorts" || symptoominv1 == "keelpijn" || symptoominv1 == "vermoeidheid" || symptoominv1 == "diarree" || symptoominv1 == "hoofdpijn") && (symptoominv2 != "koorts" || symptoominv2 != "keelpijn" || symptoominv2 != "vermoeidheid" || symptoominv2 != "diarree" || symptoominv2 != "hoofdpijn"))


查看完整回答
反对 回复 2023-07-20
?
LEATH

TA贡献1936条经验 获得超6个赞

首先,“IF”和它的“ELSE IF”应用了相同的条件,因为代码是逐行编译的,因此 JavaScript 会得到 IF 语句中满足的条件,这就是为什么它永远不会检查 else if 条件。



查看完整回答
反对 回复 2023-07-20
  • 2 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信