Pourquoi les comparaisons «supérieures à» ne s'appliquent-elles pas aux valeurs numériques dans JavaScript? L'exemple ci-dessous retourne vrai même lorsque le mini-nombre est inférieur au maxi.JavaScript ne comparant pas les valeurs de nombre supérieur au nombre maximal
Les valeurs mini et maxi sont des valeurs d'entrée de formulaire. Cet exemple utilise jQuery pour obtenir les valeurs, mais pourrait facilement être supprimé.
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);
}
Remplacement "mini> maxi" avec "Math.max (mini, maxi) == mini" fonctionne très bien. Donc, ce qui suit fonctionne:
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 peut traiter les mini et maxi comme des chaînes, et les comparer lexiquement. Dans ce cas, «500» est supérieur à «1500». Essayez de convertir mini et maxi en entiers avant de les comparer. – Karl