JavaScript比较数字

时间:2018-09-04 08:49:48

标签: javascript html

这是我的第一次,请保持温柔。 我前一段时间写了一个简单的数字比较。但是,比较得出的结果是“错误”的错误。

在这里输入我的代码:

var UpperLimit = document.getElementById("UpperLimit").value;	
var LowerLimit = document.getElementById("LowerLimit").value;	

if (UpperLimit < LowerLimit){
	alert("Upper Limit is smaller as the Lower Limit!")
	return false;	//Exit Function
} else {

// **do something with the Upper and Lower Limit**

}
Lower Limit:<input style=" margin-left: 15px;" class="Limit" id="LowerLimit" type="number">m³</input>
Upper Limit:<input style=" margin-left: 17px;" class="Limit" id="UpperLimit" type="number">m³</input>

例如,如果我(例如)在HTML中为“下限”输入150,为“上限”输入1000,则比较将返回“ true”并显示警告。 我不知道错误在哪里,我猜JS正在解释该值错误,但我不知道该怎么办。

感谢您的帮助!

Caliban

4 个答案:

答案 0 :(得分:1)

您的输入值仍会返回,因此您必须将输入值转换为数字。

您可以这样做:

var UpperLimit = Number(document.getElementById("UpperLimit").value);   
var LowerLimit = Number(document.getElementById("LowerLimit").value);   

答案 1 :(得分:0)

这是因为即使将输入类型设置为number,该值也是字符串类型。

1000 < 150 = false;
"1000" < "150" = true;

要更正此错误,只需将您的值强制转换为Number,例如:

var UpperLimit = Number(document.getElementById("UpperLimit").value);   
var LowerLimit = Number(document.getElementById("LowerLimit").value);

编辑:

作为参考,为什么会发生字符串比较:Why is one string greater than the other when comparing strings in JavaScript?

答案 2 :(得分:0)

您必须将输入的值强制转换为数字,因为它返回字符串

var UpperLimit = Number( document.getElementById("UpperLimit").value);  
var LowerLimit = Number( document.getElementById("LowerLimit").value);  

if (UpperLimit < LowerLimit){
alert("Upper Limit is smaller as the Lower Limit!")
return false;   //Exit Function
} else {

**do something with the Upper and Lower Limit**

}

答案 3 :(得分:0)

  

请尝试这个

function compair()
{
debugger;
var UpperLimit = document.getElementById("UpperLimit").value;	
var LowerLimit = document.getElementById("LowerLimit").value;	
var isvalid=true;
   let regex = new RegExp(/[^0-9]/, 'g');
  
    if (UpperLimit.match(regex)) {
       alert("UpperLimit Must be a valid number");
         isvalid=false;
    }
     if (LowerLimit.match(regex)) {
       alert("LowerLimit Must be a valid number");
         isvalid=false;
    }
if (isvalid)
{
if ( parseInt(UpperLimit) < parseInt(LowerLimit)){
alert("Upper Limit is smaller then the Lower Limit!")
return false;	//Exit Function
}
 else {
 alert("Lower Limit is smaller then the upper Limit!")
}
}
}
<html>
<head>

</head>
<body>
Lower Limit: <input style=" margin-left: 15px;" class="Limit" id="LowerLimit" type="text"/>m³ <br/>

Upper Limit: <input style=" margin-left: 17px;" class="Limit" id="UpperLimit" type="text"/>m³
<br/>
<input type="button" onclick="compair()" value="Submit"/>
</body>
</html>