我有一个HTML输入元素,我试图在用户更改值后强制将一个小数位放入输入。所以,假设用户输入“4”,我运行此代码:
this.value = this.value.toFixed(1)
然后我收到一个JavaScript错误,说“对象4没有方法'toFixed'”。
似乎JavaScript试图将文字作为数字处理并失败,但是,呃,为什么?我该如何避免呢?
答案 0 :(得分:23)
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
答案 1 :(得分:3)
首先转换为数字,
this.value = Number(this.value).toFixed(1);
this.value
是一个字符串,字符串没有toFixed
方法。