2017-06-21 27 views
1

假設'v'或's'不是空的,例如,它會計算't',問題是計算's',無論我填寫哪個框,如果'v'或's'爲空,它會首先檢查是否填滿了所有文本框(應填寫兩個)不是空的,它會檢查下一個'如果'不是嗎?它似乎隨機選擇'ifs',並在某些場合返回NaN作爲答案。我的javascript函數出錯,不知道我在做什麼錯誤來計算stv等式

提前感謝。

var count = 0; 
function stv() 
{ 
    var v = parseFloat(document.getElementById("Text1").value); 
    var s = parseFloat(document.getElementById("Text2").value); 
    var t = parseFloat(document.getElementById("Text3").value); 

    if (v != "" && t != "" && s != "") { 
     "Don't be stupid..." 
     count++ 
    } 
    if (v!="" && s!=""){ 
     document.getElementById("result").innerHTML = "time= " + s/v + "hours, or " + (s/v) * 60 + "minutes"; 
     count++; 
    } 
    if (s != "" && t != "") { 
     document.getElementById("result").innerHTML = "velocity= " + s/t + "kph"; 
     count++; 
    } 
    if (v != "" && t != "") { 
     document.getElementById("result").innerHTML = "displacement= " + (v * t) + "kilometers"; 
     count++; 
    } 

    if (count == 0){ 
     document.getElementById("result").innerHTML = "Fill in at least two parameters..."; 
} 
    count = 0; 
    document.getElementById("Text1").value = ""; 
    document.getElementById("Text2").value = ""; 
    document.getElementById("Text3").value = ""; 
} 
+3

你跟一個空字符串比較轉換到數字值。您應該在調用'parseFloat'之前比較輸入的值。 –

+2

添加到上面的評論,你的其他if將會執行,即使在你的第一個,如果檢查是否所有3填寫。使用'else if'將爲您解決。 –

+0

只需使用if(v && s)'等等。 https://jsfiddle.net/khrismuc/96mffgg4/ –

回答

1

如果檢查是「失敗」,因爲「」的parseFloat是NaN並且不等於「」。所以你應該檢查它是否不是一個數字,而不等於一個空字符串。

var a = parseFloat("") 
 
    if (isNaN(a)) console.log("I am not a number");  
 
    if (a!="") console.log("I am not an empty string");

相關問題