为什么 HTML 文本字段的值在有逗号时会发生变化
why the value of html text field get change when it has comma?
我有以下函数来计算 CPM
函数 CalCPM(){
var nv = document.getElementById('txtviews').value;
var nc = document.getElementById('txtcost').value;
var result =parseFloat(nc) / parseFloat(nv)/1000;
if(!isNaN(result))
{
document.getElementById('cpm').value = result.toFixed(4);
}
}
当您在数字中输入逗号时,它工作正常,这意味着如果你投入TXTVIEWS 1000000在 TXT成本 3000 中,您会得到正确的结果,即 3.000
但是,如果您在任何数字中使用逗号,则问题开始了,例如
如果你投入TXTVIEWS 1,000,000在TXT成本3,000
那么结果将是 0.000003
这不是一个正确的值,知道为什么吗?
谢谢
parseFloat
使用的数字格式不会将逗号识别为千位分隔符。之后的所有内容都将被忽略。
parseFloat("1,000,000")
被视为与parseFloat("1P000P000");
相同,即1
。
来自 MDN:
如果遇到符号(+或-)、数字(0-9)、小数点或指数以外的字符,它将返回该点之前的值,并忽略该字符和所有后续字符。
这应该有助于摆脱逗号并将您的值转换为数字
nc = parseFloat(nc.replace(/,/g, '')); //get rid of commas
nv = parseFloat(nv.replace(/,/g, ''));
var result = nc / nv/1000;
使用 reg-ex 这将是解决方案:
function CalCPM()
{
var nv = (document.getElementById('txtviews').value).replace(/,/g,'');
var nc = (document.getElementById('txtcost').value).replace(/,/g,'');
var result =parseFloat(nc) / parseFloat(nv)/1000;
if(!isNaN(result))
{
document.getElementById('cpm').value = Number(result).toFixed(4);
}
}
相关文章:
- 当文本不断变化时,如何避免在按钮内移动文本
- 防止文本区域的大小发生变化
- 如何将(a*b)两个输入文本值相乘,并在javascript中随文本变化动态显示
- 如何通过道场检测文本区域的变化
- 提交表单后,文本框中的日期会发生变化
- 检测按钮单击时值更改的文本框值的变化
- Javascript 不会检查文本输入值是否随组合网格而变化
- JavaScript 文本随时间来回变化(例如:1,2,3,2,1,2,3,2,1,2,3..)
- JavaScript:当用户用鼠标选择文本时,观察文本选择长度的变化
- 如何在网站上制作动画,每秒钟就会有一段文本发生变化
- 与图像幻灯片放映相对应的文本颜色变化
- 使用angularjs ng表根据特定条件使文本的颜色发生变化
- 立即检测输入[类型=“文本”]的变化
- 根据动态变化的变量(KineticJS)更改文本或颜色
- 如何在另一个文本框的值发生变化时更新文本框的值
- 如何在两个不断变化的字符串之间选择中间文本
- 文本区域-当用户编辑文本区域的内容时,文本颜色会发生变化
- 如何重载下拉下拉每个单选按钮上的变化和日期文本框的变化
- 如何使用if语句与跨度文本正在变化
- 检测UIWebView文本选择中的文本选择变化