Javascript 为什么不在if语句内部工作

Javascript 为什么不在if语句内部工作,javascript,html,Javascript,Html,我正在进行输入验证,我不想使用RegExp,但我一直想知道为什么typeof在if语句中不起作用,或者我的代码有什么问题 函数myDom(){ var message=document.getElementById('show'); var xx=document.getElementById('demo')。值; 试一试{ 如果(xx==“”)抛出“不能为空”; 如果(typeof xx==“number”)抛出“不能是number”; //如果(xx

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

函数myDom(){
var message=document.getElementById('show');
var xx=document.getElementById('demo')。值;
试一试{
如果(xx==“”)抛出“不能为空”;
如果(typeof xx==“number”)抛出“不能是number”;
//如果(xx<100)抛出“少于数百!”
}捕捉(错误){
message.innerHTML=“输入”+错误;
}
}
输入值的类型始终为字符串。由于要与严格相等运算符(
==
)进行比较,因此必须将它们转换为数字。仅当值是使用(isNaN)的唯一数字或不为空时,才应转换该值:

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

函数myDom(){
var message=document.getElementById('show');
var elValue=document.getElementById('demo').value.trim();
var xx=isNaN(elValue)| | elValue==''?elValue:Number(elValue);
试一试{
如果(xx==“”)抛出“不能为空”;
否则如果(typeof xx==“number”)抛出“不能是number”;
else message.innerHTML='';
//如果(xx<100)抛出“少于数百!”
}捕捉(错误){
message.innerHTML=“输入”+错误;
}
}


document.getElementById('demo')。value
将始终是
字符串
-因为(假设
#demo
是一个输入)input.value始终是字符串顺便说一下。。。如果xx不能是一个数字,为什么注释掉的比较仍然存在?当我使用typeof number(xx)时,它仍然表现不好。
它仍然以什么方式表现不好?
typeof Number(xx)
的结果是什么:提示,
typeof Number('anything')
将始终是一个数字,对吧-尝试使用isNaN(实际上是!isNaN)或
Number(xx)。toString()==xx
如果xx为空,这将不理想。“”