javascript - 为什么不能对 HTML 输入对象的值使用 toFixed?

标签 javascript html

我有一个 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/

相关文章:

javascript - 在 Chrome 中调整绘图 Canvas 的大小

php - HTML 到经典 ASP - 页面加载为代码行 (ASP)

html - 修改div的原点

javascript - 点击屏幕任意区域关闭导航

javascript - 通过 JavaScript 选择文本

javascript - 是否可以在不下载应用程序的情况下将文件上传到 github 帐户/存储库?

javascript - 如何使用 jQuery 选择元素的自己的文本

javascript - 简单的 If 语句似乎不起作用,但 JS 控制台不会记录任何错误

javascript - 使用 Javascript 访问位置

jquery - 在 carousel bootstrap 3 css 中对齐图像