我有一项任务要输入°F并将其转换为°C。如果输入的值不是数字,我还必须显示错误消息而不是数字。我做什么我无法让它正常工作。当我输入字母时,它只显示-17.77777777777778°C而不是messege。我可以帮到你吗?
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 :(得分:1)
这是因为您的输入是数字类型。如果您键入一个字母,则不接受此值,它仍为空字符串:
isNaN(''); // false
然后在uCelzije
函数中将此空字符串转换为0:
(5/9) * ( 0 - 32 ); // -17.77777777777778
因此您还应该检查输入是否为空,例如:
if (temp == '' || isNaN(temp)){
答案 1 :(得分:0)
Antonio,如果我理解得很好,也许你只需要添加一个新的验证来检查一个空字符串,按照你构建代码的方式。尝试在脚本中添加空字符串验证。
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";
}
&#13;
答案 2 :(得分: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>