为什么JavaScript中数值的“大于”比较不起作用。下面的例子即使在最小数小于最大数时仍然返回true。
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 );
}将"mini > maxi“替换为"Math.max(mini,maxi) == mini”可以正常工作。因此,下面的方法是可行的:
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 );
}发布于 2009-08-12 14:59:11
使用此行从字符串获取Int
if( parseInt(mini.valueOf(),10) < parseInt(maxi.valueOf(),10) ) { //also used: mini > maxi你可以像字符串一样从dom中获取要比较的值。首先,你应该把它们解析成Int,然后再进行比较。此外,最好将10作为第二个参数,以确保数字将被解析为小数。
发布于 2009-08-12 14:58:19
在第一个示例中,您正在比较字符串和"1500" < "500"。在第二个示例中,Math.max将值转换为数字。
https://stackoverflow.com/questions/1266723
复制相似问题