Почему Firebug говорит, что toFixed () не является функцией?
Я использую jQuery 1.7.2 и jQuery UI 1.9.1. Я использую код ниже в ползунке. (http://jqueryui.com/slider/)
у меня есть функция, которая должна проверить два значения и в зависимости от разницы между двумя значениями их переформатировать (до соответствующего знака после запятой). Если разница больше 10, я буду разбирать целое число. Если разница больше 5, она должна содержать один десятичный знак. Ко всему прочему, я сохраню два десятичных знака.
когда Я ввожу два значения, которые имеют разницу в десять или меньше, я использую функцию toFixed (). И, в Firebug, я вижу ошибку:
TypeError: Low.toFixed is not a function
Low = Low.toFixed(2);
есть что-то простое, что я делаю не так?
вот мой код:
var Low = $SliderValFrom.val(),
High = $SliderValTo.val();
// THE NUMBER IS VALID
if (isNaN(Low) == false && isNaN(High) == false) {
Diff = High - Low;
if (Diff > 10) {
Low = parseInt(Low);
High = parseInt(High);
} else if (Diff > 5) {
Low = Low.toFixed(1);
High = High.toFixed(1);
} else {
Low = Low.toFixed(2);
High = High.toFixed(2);
}
}
3 ответа:
toFixed
не является методом нечисловых типов переменных. Другими словами,Low
иHigh
не может быть исправлено, потому что когда вы получаете значение чего-то в Javascript, он автоматически устанавливается в строковый тип. ИспользуяparseFloat()
(илиparseInt()
С основанием, если это целое число) позволит вам конвертировать различные типы переменных в числа, которые позволятtoFixed()
функция для работы.var Low = parseFloat($SliderValFrom.val()), High = parseFloat($SliderValTo.val());
потому что
Low
- это строка.
.toFixed()
работает только с номером.
попробуйте:
Low = parseFloat(Low).toFixed(..);
Low
- это строка.
.toFixed()
работает только с номером.простой способ преодолеть такую проблему:
Low = (Low*1).toFixed(..);
умножение на 1 заставляет код преобразовать строку в число и не изменяет значение. JSFiddle код здесь.