2016-08-11 83 views
0

我有一個任務,輸入°F並將其轉換爲°C。如果輸入的值不是數字,我還必須顯示錯誤消息而不是數字。我做了什麼我無法讓它正常工作。當我輸入字母時,它只顯示-17.77777777777778°C而不是信件。我可以從你那裏得到一些幫助嗎?測試輸入值是否爲數字

function temperatura(){ 
 
    var temp = document.getElementById("tempF").value; 
 
    if (isNaN(temp)){ 
 
    document.getElementById("demo2").innerHTML = 
 
    "You need to enter a number!"; 
 
    } else { 
 
    document.getElementById("demo2").innerHTML = uCelzije(temp)+" °C"; 
 
    } 
 
} 
 
function uCelzije(f){ 
 
    return (5/9) * (Number(f) - 32); 
 
}

 

 
<p>Enter Fahrenheit to convert it to Celsius.</p> 
 
<form> 
 
    <input type="number" id="tempF">°F 
 
</form> 
 
<button onclick="temperatura()">Try it</button> 
 
<p id="demo2"></p><br>

+0

你可以用'parseFloat(yourInputValue)',它返回** **的NaN,如果這是文本;) – Servuc

+0

@Servuc它仍然顯示-17.7777,而不是messege。 –

+1

我的意思是:'parseFloat(document.getElementById(「tempF」)。value)' – Servuc

回答

1

這是因爲你輸入號碼的類型。如果你鍵入一個字母,這個值是不能接受的,它仍然是一個空字符串:

isNaN(''); // false 

那麼這個空串是uCelzije功能轉換爲0:

(5/9) * (0 - 32); // -17.77777777777778 

所以您也應該檢查如果輸入不爲空,如:

if (temp == '' || isNaN(temp)){ 
0

安東尼奧,如果我深知,也許你只需要添加一個新的驗證檢查一個空字符串,下面你如何構建你的代碼。嘗試將一個空字符串驗證添加到您的腳本。

var temp = document.getElementById("tempF").value; 
 
    if (isNaN(temp) || temp.trim() == ""){ 
 
     document.getElementById("demo2").innerHTML = 
 
     "You need to enter a number!"; 
 
    } else { 
 
     document.getElementById("demo2").innerHTML = uCelzije(temp)+" °C"; 
 
    }

0

您需要解析溫度值INT。這將確保temp是一個數字或NaN。一切都會工作得很好。

編輯:這是@Servuc建議以及問題的評論。

<p>Enter Fahrenheit to convert it to Celsius.</p> 
 
<form> 
 
    <input type="number" id="tempF">°F 
 
</form> 
 
<button onclick="temperatura()">Try it</button> 
 
<p id="demo2"></p> 
 
<br> 
 
<script> 
 
    function temperatura() { 
 
    var temp = parseInt(document.getElementById("tempF").value); 
 
    if (isNaN(temp)) { 
 
     document.getElementById("demo2").innerHTML = 
 
     "You need to enter a number!"; 
 
    } else { 
 
     document.getElementById("demo2").innerHTML = uCelzije(temp) + " °C"; 
 
    } 
 
    } 
 

 
    function uCelzije(f) { 
 
    return (5/9) * (Number(f) - 32); 
 
    } 
 
</script>