今天在做js判断两个值的问题的时候,发现了一个奇怪的现象:即两个数值之间单纯的居然出现不起作用的情况。
修改前相关js:
function check(){
var minNum = document.getElementById("minNum").value;
var maxNum = document.getElementById("maxNum").value;
var re = /^[1-9]+[0-9]*]*$/;
if(minNum == ""){
alert("请输入最小张数!");
return false;
}
if(maxNum == ""){
alert("请输入最大张数!");
return false;
}
if ((minNum != "" && !re.test(minNum)) || (maxNum != "" && !re.test(maxNum)))
{
alert("请输入正整数!");
return false;
}
if(maxNum < minNum){
alert("最小数不能大于最大数!");
return false;
}
return true;
}
后来查了相关的资料,才知道这样是有问题的,必须要用eval()函数来进行比较。网上对于eval的定义是:eval()函数用于在不引用任何特定对象的情况下计算代码字符串。
修改后的代码:
function check(){
var minNum = document.getElementById("minNum").value;
var maxNum = document.getElementById("maxNum").value;
var re = /^[1-9]+[0-9]*]*$/;
if(minNum == ""){
alert("请输入最小张数!");
return false;
}
if(maxNum == ""){
alert("请输入最大张数!");
return false;
}
if ((minNum != "" && !re.test(minNum)) || (maxNum != "" && !re.test(maxNum)))
{
alert("请输入正整数!");
return false;
}
if(eval(maxNum) < eval(minNum)){
alert("最小数不能大于最大数!");
return false;
}
return true;
}
在此记录下来,给自己提个醒。