Подтвердить что ты не робот

Почему 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);
}
}
4b9b3361

Ответ 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));


},