Почему я не могу использовать toFixed для значения объекта ввода HTML? - PullRequest
3 голосов
/ 16 марта 2011

У меня есть элемент ввода HTML, и я пытаюсь ввести одно десятичное место после ввода значения пользователем.Итак, допустим, что пользователь вводит «4», я запускаю этот код:

this.value = this.value.toFixed(1)

, но затем я получаю ошибку JavaScript, говорящую «У объекта 4 нет метода toFixed».

Кажется, что JavaScript пытается обработать литерал как число и терпит неудачу, но почему?И как мне этого избежать?

Ответы [ 2 ]

23 голосов
/ 16 марта 2011

this.value - это String, когда вы получаете его из элемента ввода. Вам нужно привести его к числу, прежде чем вы сможете использовать методы числа:

this.value = Number(this.value).toFixed(1);

В качестве альтернативы вы можете использовать унарный оператор + для приведения строки к числу:

this.value (+this.value).toFixed(1);

Если вам нужно удалить строковые суффиксы, вы можете использовать parseFloat:

this.value = parseFloat(this.value).toFixed(1);

Однако, стоит отметить, что parseFloat не обрабатывает шестнадцатеричные форматы при приведении к Number делает :

this.value = +'0xF'; //15
this.value = parseFloat('0xF'); //0
3 голосов
/ 16 марта 2011

сначала преобразовать в число,

this.value = Number(this.value).toFixed(1);

this.value - это строка, и строка не имеет метода toFixed.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...