JavaScript nicht vergleichen minimum, das größer als die maximale Anzahl Werte
Warum ist "größer als" - Vergleich für die Anzahl der Werte in JavaScript nicht funktioniert. Das Beispiel unten hält "true" zurückgeben, auch wenn die mini-Anzahl kleiner als die maxi.
mini-und maxi-form-input-Werte. Dieses Beispiel ist mit jQuery, um die Werte, konnte aber leicht abgezogen werden.
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 );
}
Ersetzen "mini" > "maxi" mit "Math.max(mini, maxi) == mini" funktioniert gut. So, der folgende Code funktioniert:
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 );
}
- Javascript kann die Behandlung von mini-und maxi als strings, und nur lexikalisch verglichen werden. In dem Fall '500' größer als '1500'. Versuchen, die Umwandlung von mini-und maxi-Ganzzahlen, bevor Sie miteinander verglichen werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie diese Linie zu bekommen Int von String
seit dem bekommen Sie Werte vergleichen, die aus dem dom-wie ein string. Faust sollte man parse Sie in Int und dann erst vergleichen.
Auch ist es besser, 10 als zweiten Parameter, um sicher zu sein, wird die Zahl interpretiert werden als dezimale.
im ersten Beispiel vergleichen von strings und
"1500" < "500"
. Im zweiten BeispielMath.max
wandelt die Werte zu zahlen.