将逗号传递给文本框时为什么getElementById会截断逗号后面的数字

时间:2016-04-25 06:15:27

标签: javascript html getelementbyid truncated

请检查此代码:

function 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

或者如果您首先为txtcost设置值 然后结果将是3000.0000

这两种方式都不是正确的值,任何想法是什么问题??

2 个答案:

答案 0 :(得分:0)

我相信你不得不把它们剥掉,然后把它们重新加入(逗号,就是这样)..

function CalCPM()
{
    var nv = document.getElementById('txtviews').value.replace(',','');
    var nc = document.getElementById('txtcost').value.replace(',','');
    var result =parseFloat(nc) / parseFloat(nv)/1000;
    if(!isNaN(result))
    {
        document.getElementById('cpm').value = Number(result).toLocaleString('en'); 
    }
}

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