开发者

Why can't I use toFixed on an HTML input object's value?

开发者 https://www.devze.com 2023-02-17 19:10 出处:网络
I have an HTML i开发者_StackOverflownput element and I\'m trying to force a single decimal place into the input after the user changes the value.So, let\'s say the user enters \"4\", I run this code:

I have an HTML i开发者_StackOverflownput element and I'm trying to force a single decimal place into the input after the user changes the value. So, let's say the user enters "4", I run this code:

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

but then I get a JavaScript error saying "Object 4 has no method 'toFixed'".

It seems like JavaScript is trying to process a literal as a Number and failing but, er, why? And how do I avoid it?


this.value is a String when you get it from an input element. You need to cast it to a number before you can use a number's methods on it:

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

Alternatively you can use the unary + operator to cast the string to a number:

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

If you need to remove string suffixes, then you could use parseFloat:

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

However, it's worth noting that parseFloat does not handle hexadecimal formats while casting to Number does:

this.value = +'0xF'; //15
this.value = parseFloat('0xF'); //0


convert to a Number first,

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

this.value is a String, and a string does not have the toFixed method.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号