2016-11-18 11 views
0

這個三條規則需要識別的是X或Y,然後根據它的位置和proporcion的類型(直接或反向)來計算它。但由於某種原因HTML中的頁面返回值「ERROR!」 (在其他條件下設置)。Javascript規則三它不起作用

<!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>

我很抱歉,我的英語。我是巴西人。

+0

我可以看到你正在檢查,如果被點擊單選按鈕/檢查?但是:var i5 = document.getElementById(「inv」).value;然後在代碼中:i5.value === true所以你有obj.value.value,這是未定義的,也是radio的默認值是'on'...你應該使用像這樣的東西:http:// stackoverflow .com/questions/1423777/how-can-i-check-a-radio-button-is-selected-with-javascript – sinisake

+1

單選按鈕有'checked',而不是'value'。另外'i1' - 'i4'是DOM元素,而不是值。 – putvande

+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!" 
    } 
} 
+0

第一次= NaN第二次=「錯誤!」 –

+0

你在改變第一個和第二個結果之間的輸入嗎?如果我選擇第一個廣播,並在第一個文本字段中輸入「x」,每次單擊按鈕時都會記錄「NaN」。 –