取消选中时,复选框时保持相同.我该如何修复



function diagnose() {
  var add = 0;
  var age = parseFloat(document.getElementById('myNumber').value);
  var table = document.getElementById('table');
  var checkboxes = document.getElementsByClassName('addon');
  for (var i = 0; i < checkboxes.length; i++) {
    if (checkboxes[i].checked) {
      add += parseFloat(checkboxes[i].value);
    }
  }
  var p = +add;
  var ad = 0;
  var checkboxe = document.getElementsByClassName('addon2');
  if (age < 3 && p >= 4) {
    for (var j = 0; j < checkboxe.length; j++) {
      if (checkboxe[j].checked) {
        ad += parseFloat(checkboxe[j].value);
      }
      var a = p + ad;
      if (a >= 5) {
        document.getElementById('total').innerHTML = "Clininacal diagnosis yes ";
      }
    }
  } else {
    document.getElementById('total').innerHTML = " Clininacal diagnosis no";
  }
}
document.getElementById('table').addEventListener('change', diagnose);
</head>
<body>
  Age: <input type="number" id="myNumber" class="no-spinners">
  <div id="table">
https://stackoverflow.com/posts/46125218/edit#  <input type="checkbox" name="Neonatal" value="1.0" class="addon">
  <label for="Neo">Neo</label></br>
  <input type="checkbox" name="F" value="1.0" class="addon">
  <label for="Feed">Feed</label></br>
  <input type="checkbox" name="W" value="1.0" class="addon">
  <label for="Weight">Weight</label></br>
  <input type="checkbox" name="Dysmorphic" value="1.0" class="addon">
  <label for="Char">Char</label></br>
  <input type="checkbox" name="Pub" value="1.0" class="addon">
  <label for="Pub">Smally</label></br>
  <input type="checkbox" name="Dev" value="1.0" class="addon">
  <label for="Dev">Dev</label></br>
<hr>
    <input type="checkbox" name="Lethargy" value=".5" class="addon2">
    <label for="Lethargy">Lethargy</label></br>
    <input type="checkbox" name="Typical" value=".5" class="addon2">
    <label for="TypicalBehavior">Typical</label></br>
    <input type="checkbox" name="Sleep" value=".5" class="addon2">
    <label for="Sleep">Sleep</label></br>
    <input type="checkbox" name="Short" value=".5" class="addon2">
    <label for="Short">Short</label></br>
    <input type="checkbox" name="Hypo" value=".5" class="addon2">
    <label for="Hypo">Hypo</label></br>
    <input type="checkbox" name="Small" value=".5" class="addon2">
    <label for="Small">Small</label></br>
    <input type="checkbox" name="Narrow" value=".5" class="addon2">
    <label for="Narrow">Narrow</label></br>
    <input type="checkbox" name="Esot" value=".5" class="addon2">
    <label for="Esot">Esot</label></br>
    <input type="checkbox" name="Thick" value=".5" class="addon2">
    <label for="Thick">Thick</label></br>
    <input type="checkbox" name="Speech" value=".5" class="addon2">
    <label for="Speech">Speech</label></br>
    <input type="checkbox" name="Skin" value=".5" class="addon2">
    <label for="Skin">Skin</label></br>
</div>
<span id="total"></span>
  </div>
</body>

所以我有这个代码。在线上每个输入都有1分,在每条输入的行下方都有0.5点。为了正确的结果,它至少需要5分,但是其中4个必须是1分输入。例如,四1分和两个.5点。我得到了它的工作,但是在取消选中复选框时,它仍然显示相同的字符串。那我该如何解决呢?谢谢。

您也只需要在内部条件评估中添加else即可。其他:

else {
    document.getElementById('total').innerHTML = " Clininacal diagnosis no";
}

整个代码:

function diagnose() {
    var add = 0;
    var age = parseFloat(document.getElementById('myNumber').value);
    var table = document.getElementById('table');
    var checkboxes = document.getElementsByClassName('addon');
    for (var i = 0; i < checkboxes.length; i++) {
        if (checkboxes[i].checked) {
            add += parseFloat(checkboxes[i].value);
        }
    }
    var p = +add;
    var ad = 0;
    var checkboxe = document.getElementsByClassName('addon2');
    if (age < 3 && p >= 4) {    
        for (var j = 0; j < checkboxe.length; j++) {
            if (checkboxe[j].checked) {
                ad += parseFloat(checkboxe[j].value);
            }
            var a = p + ad;
            if (a >= 5) {
                document.getElementById('total').innerHTML = "Clininacal diagnosis yes ";
            } else {
                document.getElementById('total').innerHTML = " Clininacal diagnosis no";
            }
        }  
    } else {
        document.getElementById('total').innerHTML = " Clininacal diagnosis no";
    }
}
document.getElementById('table').addEventListener('change', diagnose);

最后一个 else块,说明只有在不满足(age < 3 && p >= 4)条件时才能达到负面答案要在(a >= 5)条件或存储后复制最后的最后一个导致变量,并根据其确定结果消息:

  var positive = false;
  if (age < 3 && p >= 4) {
    for (var j = 0; j < checkboxe.length; j++) {
      if (checkboxe[j].checked) {
        ad += parseFloat(checkboxe[j].value);
      }
      var a = p + ad;
      if (a >= 5) {
        positive = true;
      }  
    }
  }
  if (positive) {
    document.getElementById('total').innerHTML = "Clininacal diagnosis yes ";
  }
  else {
    document.getElementById('total').innerHTML = " Clininacal diagnosis no";
  } 

最新更新