В моем приложении два текстовых поля имеютJavaScript casting - почему сравнение «5»> «300» возвращает true?
<input type="text" ng-model="priceSlider.min" /><br/>
<input type="text" ng-model="priceSlider.max" /><br/>
Мой angularjs контроллер:
app.controller('MainCtrl', function($scope) {
$scope.priceSlider = {};
$scope.priceSlider.min = 100;
$scope.priceSlider.max = 400;
$scope.priceSlider.ceil = 500;
$scope.priceSlider.floor = 0;
$scope.$watch('priceSlider.min',function(newVal,oldVal) {
if(isNaN($scope.priceSlider.min)) {
console.log('naan');
$scope.priceSlider.min=oldVal;
}
if($scope.priceSlider.min>$scope.priceSlider.max) {
console.log($scope.priceSlider.min>$scope.priceSlider.max);
console.log($scope.priceSlider.min+":"+$scope.priceSlider.max);
var t = $scope.priceSlider.min;
$scope.priceSlider.min = $scope.priceSlider.max;
$scope.priceSlider.max = t;
}
}
});
Теперь большую часть времени, если условие в $ часы работает нормально, но в некоторых условиях он не например: Если я пишу 200 и 300 в двух текстовых полях, и я выбираю первое текстовое поле и пытаюсь изменить (на 5), значения, которые идут, если это 5 и 300, но условие 5> 300, если показано true ... I я не могу найти, почему это происходит. Я делаю что-нибудь глупое
Пожалуйста, проверьте вещь в плунжере.
http://plnkr.co/edit/4Wga7zCIX2udPZa6b0gI
возможно дубликат [Javascript строки/целочисленные сравнения] (http://stackoverflow.com/questions/5630123/javascript-string-integer-comparisons) – Bergi
@mohamedrias Ах да, вы правы – Jojo