最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

math - JavaScript not comparing minimum greater than maximum number values - Stack Overflow

programmeradmin1浏览0评论

Why is "greater than" parisons for number values in JavaScript not working. The example below keeps returning true even when the mini number is less than the maxi.

mini and maxi are form input values. This example is using jQuery to get the values, but could easily be stripped.

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 );
}

Replacing "mini > maxi" with "Math.max(mini, maxi) == mini" works fine. So, the following does work:

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 );
}

Why is "greater than" parisons for number values in JavaScript not working. The example below keeps returning true even when the mini number is less than the maxi.

mini and maxi are form input values. This example is using jQuery to get the values, but could easily be stripped.

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 );
}

Replacing "mini > maxi" with "Math.max(mini, maxi) == mini" works fine. So, the following does work:

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 );
}
Share Improve this question asked Aug 12, 2009 at 14:55 AndresAndres 5,2286 gold badges32 silver badges35 bronze badges 1
  • 1 Javascript may be treating mini and maxi as strings, and just lexically paring them. In which case '500' is greater than '1500'. Try converting mini and maxi to integers before paring them. – Karl Commented Aug 12, 2009 at 14:58
Add a ment  | 

2 Answers 2

Reset to default 4

Use this line to get Int from String

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

sinve you get values to pare from dom like a string. Fist you should parse them into Int and only then pare. Also it is better to put 10 as a second param to be sure the number will be parsed as decimal.

in first example you are paring strings and "1500" < "500". In second example Math.max converts the values to numbers.

发布评论

评论列表(0)

  1. 暂无评论