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