为什么html文本字段的值在逗号时发生变化?
问题描述:
我有以下函数来计算CPM为什么html文本字段的值在逗号时发生变化?
功能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 and in txtcost 3000 you get a correct result that is 3.000
但是,如果您使用co MMAS中的任何数字,那么问题开始,像
,如果你把在 txtviews百万 和txtcost 3000
那么结果将是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);
}
}