为什么typeof在if语句中不起作用

时间:2020-02-09 00:02:02

标签: javascript html

我正在进行输入验证,我不想使用RegExp,但我一直想知道为什么if语句中的typeof不能正常工作或我的代码有什么问题

function myDom(){
    
    var message = document.getElementById('show');
    var xx = document.getElementById('demo').value;
    try{
        if(xx === "") throw "can not be empty";
        if(typeof xx === "number") throw "can not be number";
        //if(xx < 100) throw "less than hundreds!"
   }catch(err){
       message.innerHTML = "input " + err;
   }
    
}

1 个答案:

答案 0 :(得分:1)

输入 value 的类型始终为 string 。由于您要与严格相等运算符(===)进行比较,因此必须将它们转换为 number 。仅当值仅是使用( isNaN )的数字或不为空时,才应转换值:

var elValue = document.getElementById('demo').value;
var xx = isNaN(elValue) || elValue == '' ? elValue: Number(elValue);

演示:

function myDom(){
  var message = document.getElementById('show');
  var elValue = document.getElementById('demo').value.trim();
  var xx = isNaN(elValue) || elValue == '' ? elValue: Number(elValue);
  try{
    if(xx === "") throw "can not be empty";
    else if(typeof xx === "number") throw "can not be number";
    else message.innerHTML = '';
    //if(xx < 100) throw "less than hundreds!"
  }catch(err){
    message.innerHTML = "input " + err;
  }
}
<input id="demo" oninput="myDom()"/>
<div id="show"></div>