我有一个 HTML 输入元素,我试图在用户更改值后强制输入一个小数位。所以,假设用户输入“4”,我运行这段代码:
this.value = this.value.toFixed(1)
但随后我收到一个 JavaScript 错误,提示“对象 4 没有方法‘toFixed’”。
似乎 JavaScript 正在尝试将文字处理为数字但失败了,但是,呃,为什么?我该如何避免呢?
最佳答案
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
关于javascript - 为什么不能对 HTML 输入对象的值使用 toFixed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5330420/