Почему 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);
}
}
Ответы
Ответ 1
toFixed
не является методом нечисловых типов переменных. Другими словами, Low
и High
не могут быть исправлены, потому что, когда вы получаете значение чего-то в Javascript, он автоматически устанавливается в тип строки. Используя parseFloat()
(или parseInt()
с радиусом, если это целое число), вы сможете преобразовать разные типы переменных в числа, которые позволят работать с функцией toFixed()
.
var Low = parseFloat($SliderValFrom.val()),
High = parseFloat($SliderValTo.val());
Ответ 2
Это потому, что Low
- это строка.
.toFixed()
работает только с числом.
Попробуйте сделать:
Low = parseFloat(Low).toFixed(..);
Ответ 3
Low
строка.
.toFixed()
работает только с числом.
Простой способ преодолеть такую проблему - использовать приведение типов:
Low = (Low*1).toFixed(..);
Умножение на 1 заставляет код преобразовывать строку в число и не меняет значение. Код JSFiddle здесь.
Ответ 4
Low = parseFloat(Low).toFixed(..);
works:) усвоил это с трудом.
Ответ 5
В функции используйте как
render: function (args) {
if (args.value != 0)
return (parseFloat(args.value).toFixed(2));
},