我的“ if”语句在函数中出现问题

时间:2019-03-18 12:28:17

标签: javascript

“ 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 = "";
}

2 个答案:

答案 0 :(得分:0)

其原因是NaNnumber

>> 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;
  }
}