为什么html文本字段的值在有逗号时会发生变化?

时间:2016-04-24 21:38:33

标签: javascript html events getelementbyid entities

我有以下函数来计算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 在txtcost 3000中,您得到的结果是3.000

但是,如果您在任何数字中使用逗号,则问题就会出现,例如

如果你投入 txtviews 1,000,000 并以txtcost 3,000

然后结果将是0.000003

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

由于

3 个答案:

答案 0 :(得分:0)

SELECT SUBSTRING_INDEX(`users`.`email`, '@', -1) col1, count(1) FROM `users` GROUP BY 1 使用的数字格式无法将逗号识别为千位分隔符。之后的一切都被忽略了。

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

来自MDN

  

如果遇到符号(+或 - ),数字(0-9),小数点或指数以外的字符,则返回到该点的值并忽略该字符和所有后续字符。

答案 1 :(得分:0)

这应该有助于摆脱逗号并将您的值转换为数字

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

答案 2 :(得分: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); 
  }
}