Javascript规则三,它不起作用

时间:2016-11-18 19:52:56

标签: javascript html math syntax-error

这三个需要识别的规则是X或Y,然后从它的位置和proporcion的类型(直接或反向)计算它。但由于某种原因,HTML中的页面会返回值" ERROR!" (在else条件下设置)。



<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <input type="radio" id="inv">Inversamente</input>
    <input type="radio" id="dir">Diretamente</input><br />
    <input type="text" id="I1"></input>
    <input type="text" id="I2"></input><br />
    <input type="text" id="I3"></input>
    <input type="text" id="I4"></input><br /><br />
    <button id="button" onclick="button()">Calcular</button>
    <script type="text/javascript">
      function button() {
        var i1 = parseInt(document.getElementById("I1"));
        var i2 = parseInt(document.getElementById("I2"));
        var i3 = parseInt(document.getElementById("I3"));
        var i4 = parseInt(document.getElementById("I4"));
        var i5 = document.getElementById("inv").value;
        var i6 = document.getElementById("dir").value;
        if (i1.value == "x" && i5.value === true || i1.value =="y" && i5.value === true){
          var r1 = i3.value*i4.value/i2.value;
          document.write("Resultado é " + r1);
        }
        else if (i1.value == "x" && i6.value === true || i1.value =="y" && i6.value === true) {
          var r2 = i3.value*i2.value/i4.value;
          document.write("Resultado é " + r2);
        }
        else if (i2.value == "x" && i5.value === true || i2.value =="y" && i5.value === true) {
          var r3 = i3.value*i4.value/i1.value;
          document.write("Resultado é " + r3);
        }
        else if (i2.value == "x" && i6.value === true || i2.value =="y" && i6.value ===true) {
          var r4 = i1.value*i4.value/i3.value;
          document.write("Resultado é " + r4);
        }
        else if (i3.value == "x" && i5.value === true || i3.value =="y" && i5.value === true) {
          var r5 = i1.value*i2.value/i4.value;
          document.write("Resultado é " + r5);
        }
        else if (i3.value == "x" && i6.value === true || i3.value =="y" && i6.value === true) {
          var r6 = i1.value*i4.value/i2.value;
          document.write("Resultado é " + r6);
        }
        else if (i4.value == "x" && i5.value === true || i4.value =="y" && i5.value === true) {
          var r7 = i1.value*i2.value/i3.value;
          document.write("Resultado é " + r7);
        }
        else if (i4.value == "x" && i6.value === true || i4.value =="y" && i6.value === true) {
          var r8 = i2.value*i3.value/i1.value;
          document.write("Resultado é " + r8);
        }
        else{
          document.write("ERROR!");//whatever the case of the rule of the above, it aways return "ERROR!"
        }
      }
    </script>
&#13;
&#13;
&#13;

对不起我的英语。我是巴西人。

1 个答案:

答案 0 :(得分:0)

您在DOM元素上运行parseInt()而不是元素的值,但您还要在其中任何一个输入中查找字符输入。我已经纠正了有关价值比较的问题,但如果未填写所有输入,您将收到NaN回复。

更正了JS:

function button() {
  var i1 = document.getElementById("I1");
  var i2 = document.getElementById("I2");
  var i3 = document.getElementById("I3");
  var i4 = document.getElementById("I4");
  var i5 = document.getElementById("inv");
  var i6 = document.getElementById("dir");
  console.log(i1.value);
  console.log(i2.value);
  console.log(i3.value);
  console.log(i4.value);
  console.log(i5.checked);
  console.log(i6.checked);

  if (i1.value == "x" && i5.checked === true || i1.value == "y" && i5.checked === true) {
    var r1 = i3.value * i4.value / i2.value;
    console.log("Resultado é " + r1);
  } else if (i1.value == "x" && i6.value === true || i1.value == "y" && i6.value === true) {
    var r2 = i3.value * i2.value / i4.value;
    console.log("Resultado é " + r2);
  } else if (i2.value == "x" && i5.value === true || i2.value == "y" && i5.value === true) {
    var r3 = i3.value * i4.value / i1.value;
    console.log("Resultado é " + r3);
  } else if (i2.value == "x" && i6.value === true || i2.value == "y" && i6.value === true) {
    var r4 = i1.value * i4.value / i3.value;
    console.log("Resultado é " + r4);
  } else if (i3.value == "x" && i5.value === true || i3.value == "y" && i5.value === true) {
    var r5 = i1.value * i2.value / i4.value;
    console.log("Resultado é " + r5);
  } else if (i3.value == "x" && i6.value === true || i3.value == "y" && i6.value === true) {
    var r6 = i1.value * i4.value / i2.value;
    console.log("Resultado é " + r6);
  } else if (i4.value == "x" && i5.value === true || i4.value == "y" && i5.value === true) {
    var r7 = i1.value * i2.value / i3.value;
    console.log("Resultado é " + r7);
  } else if (i4.value == "x" && i6.value === true || i4.value == "y" && i6.value === true) {
    var r8 = i2.value * i3.value / i1.value;
    console.log("Resultado é " + r8);
  } else {
    console.log("ERROR!"); //whatever the case of the rule of the above, it aways return "ERROR!"
  }
}