Javascript否则如果Statement没有评估第二个条件?

时间:2018-05-21 17:56:02

标签: javascript if-statement

我正在制作一个医疗计算器,并想知道为什么第一个"否则如果"声明未被评估。 - 我尝试做的是计算"如果initialPTT小于或等于40并且体重超过250,则显示" 1000达到最大剂量。"它似乎只是在第一个"在线上进行计算。如果"声明和第一个"否则如果"言。

<script type="text/javascript">
function calculate()
{
  bodyWeight = document.getElementById("bodyWeight").value;
  initialPTT = document.getElementById("initialPTT").value;

  document.getElementById("resultInfusionUnitsHr").innerHTML = bodyWeight * initialPTT;

  // Start Infusion Units/Hr
  if(initialPTT <= 40){
    document.getElementById("resultInfusionUnitsHr").innerHTML = bodyWeight * 4;
  } else if ((initialPTT <=40) && (bodyWeight > 250)){
    document.getElementById("resultInfusionUnitsHr").innerHTML = "1000 Maximum Dose Reached"; 
  } else if ((initialPTT <=40) && (initialPTT < 51)){
    document.getElementById("resultInfusionUnitsHr").innerHTML = bodyWeight * 2;  
  } else if ((initialPTT <=40) && (initialPTT < 51) && (bodyWeight > 500)){
    document.getElementById("resultInfusionUnitsHr").innerHTML = "1000 Maximum Dose Reached";  
  } else {
    document.getElementById("resultInfusionUnitsHr").innerHTML = bodyWeight * 2;
  }

}

See it on CodePen

2 个答案:

答案 0 :(得分:0)

将您的条件更改为

// Start Infusion Units/Hr
if ((initialPTT <= 40) && (bodyWeight <= 250)) { 
  document.getElementById("resultInfusionUnitsHr").innerHTML = bodyWeight * 4;
} else if ((initialPTT <= 40) && (bodyWeight > 250)) {
  resultInfusionUnitsHr = "1000 Maximum Dose Reached";
} else if ((initialPTT <= 40) && (initialPTT < 51) && (bodyWeight < 500)) {
  document.getElementById("resultInfusionUnitsHr").innerHTML = bodyWeight * 2;
} else if ((initialPTT <= 40) && (initialPTT < 51) && (bodyWeight > 500)) {
  document.getElementById("resultInfusionUnitsHr").innerHTML = "1000 Maximum Dose Reached";
} else {
  document.getElementById("resultInfusionUnitsHr").innerHTML = bodyWeight * 2;
}

答案 1 :(得分:0)

if语句以及if else和else语句的工作方式是,首先评估if语句,如果为false,则移动到next else,依此类推,直到它到达else语句,如果所有if和语句都运行if else语句被评估为false。但是,当其中一个if语句被评估为true时,就会运行if语句之后的代码块,然后其他if语句运行。

让我们看一下这个例子:

//given two variables a and b
if (a === true && b === true){
    // case 1
} else if (a === true && b === false){
    // case 2
} else if (a === false && b === true){
    // case 3
} else {
    // case 4
}
//soon as **any one of** the four cases above is run, the next line to run is the one that would be here, the if statements only get evaluated until the first one to be evaluated true.

因此,在您的代码中,只能运行if和else语句。没有else if语句可能会运行,因为它们都需要initialPPT&lt; = 40.但如果是这种情况,则if语句将是要运行的语句。你想要做的是嵌套if语句。