2016-04-24 80 views
0

我有以下函数来计算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

这是不正确的值,任何想法为什么?

感谢

回答

0

使用parseFloat不承认逗号作为千位分隔符的数字格式。之后的所有内容都被忽略。

parseFloat("1,000,000")的处理方式与parseFloat("1P000P000");相同,即1

MDN

如果遇到比的标志以外的字符(+或 - ),数字(0-9),一个小数点,或指数,它返回值直到该指向并忽略该角色和所有后续角色。

0

这将有助于摆脱逗号和转换您的值数点

nc = parseFloat(nc.replace(/,/g, '')); //get rid of commas 
nv = parseFloat(nv.replace(/,/g, '')); 
var result = nc/nv/1000; 
0

使用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); 
    } 
} 
相关问题