Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript不比较最小值大于最大值的值_Javascript_Math_Comparison - Fatal编程技术网

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

JavaScript不比较最小值大于最大值的值,javascript,math,comparison,Javascript,Math,Comparison,为什么JavaScript中数字值的“大于”比较不起作用。下面的示例始终返回true,即使mini数小于maxi 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.

为什么JavaScript中数字值的“大于”比较不起作用。下面的示例始终返回true,即使mini数小于maxi

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

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

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

使用此行从字符串中获取Int

if( parseInt(mini.valueOf(),10) < parseInt(maxi.valueOf(),10) ) { //also used: mini > maxi
if(parseInt(mini.valueOf(),10)maxi
如果你从dom中得到的值像字符串一样进行比较,首先你应该把它们解析成Int,然后再进行比较。
另外,最好将10作为第二个参数,以确保数字将被解析为十进制。

使用此行从字符串中获取Int

if( parseInt(mini.valueOf(),10) < parseInt(maxi.valueOf(),10) ) { //also used: mini > maxi
if(parseInt(mini.valueOf(),10)maxi
如果你从dom中得到的值像字符串一样进行比较,首先你应该把它们解析成Int,然后再进行比较。
另外,最好将10作为第二个参数,以确保数字将被解析为十进制。

Javascript可能将mini和maxi视为字符串,并仅在词汇上进行比较。在这种情况下,“500”大于“1500”。在比较之前,尝试将mini和maxi转换为整数。Javascript可能将mini和maxi视为字符串,这是一个错误d只是在词汇上比较它们。在这种情况下,“500”大于“1500”。在比较它们之前,请尝试将mini和maxi转换为整数。您可以使用:parseInt()显式转换为整数。您可以使用:parseInt()显式转换为整数。我想知道是否需要mini.valueOf()。而不是使用parseInt(mini,10)更快?请记住使用mini.replace(“,”,”);删除逗号,否则任何值转换都不起作用。我想知道是否需要mini.valueOf()。相反,使用parseInt(mini,10)是否更快?请记住使用mini.replace(“,”,”);删除逗号,否则任何值转换都不起作用。