为什么我不能在HTML输入对象的值上使用toFixed?

时间:2011-03-16 19:05:29

标签: javascript html

我有一个HTML输入元素,我试图在用户更改值后强制将一个小数位放入输入。所以,假设用户输入“4”,我运行此代码:

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

然后我收到一个JavaScript错误,说“对象4没有方法'toFixed'”。

似乎JavaScript试图将文字作为数字处理并失败,但是,呃,为什么?我该如何避免呢?

2 个答案:

答案 0 :(得分:23)

从输入元素获取它时,

this.valueString。您需要先将其强制转换为数字,然后才能使用数字的方法:

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

答案 1 :(得分:3)

首先转换为数字,

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

this.value是一个字符串,字符串没有toFixed方法。