“ addD”函数中的“ if”语句有什么问题? 我希望我的应用程序如果提示没有输入数字,则显示我的消息“不是数字”而不是“ NaN”
var dataArr = [];
function addD() {
var dataSin = prompt("What number do you want to add?");
if(typeof (dataSin) != 'number') {
document.getElementById("targetD").innerHTML = dataSin + " is not
a number";
}
var numB = parseFloat(dataSin);
dataArr[dataArr.length] = numB;
document.getElementById("targetD").innerHTML = dataArr;
}
function getR() {
if(dataArr.length > 0) {
var sum =0;
for(i=0; i<dataArr.length; i++) {
sum += dataArr[i];
}
document.getElementById("targetR").innerHTML = sum/dataArr.length;
}
else {
document.getElementById("targetR").innerHTML = "Please Add
Numbers";
}
}
function resetD() {
dataArr = [];
document.getElementById("targetD").innerHTML = "";
document.getElementById("targetR").innerHTML = "";
}
答案 0 :(得分:0)
其原因是NaN
是number
:
>> typeof(NaN)
<- "number"
所以您也应该检查一下:
if (typeof(dataSin) != 'number' || isNaN(dataSin)) {
// not of type number, or NaN
}
,并且应该在检查类型之前进行解析。 prompt
始终返回一个字符串。
答案 1 :(得分:0)
修复它的简单方法是,已经在第一行中将其转换为float,然后如果输入的不是数字,则返回NaN
,大小写不起作用。并查看:
NaN === NaN; // Returns false
isNaN(NaN); // Returns true
其他问题是,据我所知,提示符始终返回字符串或null
。因此,下面的代码应该可以解决您的问题:
function addD() {
var dataSin = parseFloat(prompt("What number do you want to add?"));
if(isNaN(dataSin)) {
document.getElementById("targetD").innerHTML = dataSin + " is not a number";
} else {
dataArr[dataArr.length] = dataSin;
document.getElementById("targetD").innerHTML = dataArr;
}
}