JavaScript不比较最小值大于最大值

时间:2009-08-12 14:55:04

标签: javascript math comparison

为什么JavaScript中的数字值的“大于”比较不起作用。即使迷你号码小于最大值,下面的示例也会保持返回。

mini和maxi是表单输入值。这个例子使用jQuery来获取值,但很容易被剥离。

var mini = $('form#filterPrice input.min').val(); //eg. 500
var maxi = $('form#filterPrice input.max').val(); //eg. 1500

if( mini.valueOf() > maxi.valueOf() ) { //also used: mini > maxi
    alert('test'); //alerts "test" even when mini is less than maxi
$('form#filterPrice input.min').val( maxi ); //should switch values if mini > maxi
$('form#filterPrice input.max').val( mini );
}

用“Math.max(mini,maxi)== mini”替换“mini> maxi”工作正常。所以,以下工作确实有效:

var mini = $('form#filterPrice input.min').val(); //eg. 500
var maxi = $('form#filterPrice input.max').val(); //eg. 1500

if( Math.max(mini, maxi) == mini ) {
    alert('test'); 
$('form#filterPrice input.min').val( maxi );
$('form#filterPrice input.max').val( mini );
}

2 个答案:

答案 0 :(得分:4)

使用此行从String

获取Int
if( parseInt(mini.valueOf(),10) < parseInt(maxi.valueOf(),10) ) { //also used: mini > maxi

你得到的值可以从字符串dom中进行比较。你应该将它们解析为Int,然后再进行比较。 最好将10作为第二个参数,以确保将数字解析为十进制。

答案 1 :(得分:0)

在第一个示例中,您要比较字符串和"1500" < "500"。在第二个示例中,Math.max将值转换为数字。