【问题标题】:JavaScript: Uncaught Typerror on parseFloat in input type textJavaScript:输入类型文本中 parseFloat 上的未捕获类型错误
【发布时间】:2018-05-07 14:34:12
【问题描述】:

您好,我收到了错误 Uncaught Typerror on parseFloat in input type text,但我找不到解决方案

当我在字段 txtJurosBaixa2 上执行 parseFloat 时,我试图在上面创建这个函数,如果我将代码放在浏览器控制台上运行正常,但在函数上他崩溃了,我得到了错误。

代码var jrBaixa = isNaN(parseFloat($("#txtJurosBaixa2").val().replace(/\./g, '').replace(',', '.'))) ? 0 : parseFloat($("#txtJurosBaixa2").val().replace(/\./g, '').replace(',', '.'));

这部分进展顺利

isNaN(parseFloat($("#txtJurosBaixa2").val().replace(/\./g, '').replace(',', '.'))) ? 0

但是这个没有

: parseFloat($("#txtJurosBaixa2").val().replace(/\./g, '').replace(',', '.'));

txtJurosBaixa2 的值是“0,00”

我的代码是

function CalculaValores () {
    var formato = { minimumFractionDigits: 2, style: 'currency', currency: 'BRL'    
    var vlrFatura = isNaN(parseFloat($("#txtValorFatura").val().replace(/\./g, '').replace(',', '.'))) ? 0 : parseFloat($("#txtValorFatura").val().replace(/\./g, '').replace(',', '.'));
    var vlrDesc = isNaN(parseFloat($("#txtDesconto").val().replace(/\./g, '').replace(',', '.'))) ? 0 : parseFloat($("#txtDesconto").val().replace(/\./g, '').replace(',', '.'));
    var vlrJuros = isNaN(parseFloat($("#txtJuros").val().replace(/\./g, '').replace(',', '.'))) ? 0 : parseFloat($("#txtJuros").val().replace(/\./g, '').replace(',', '.'));
    var tarifa = isNaN(parseFloat($("#txtTarifaBanc").val().replace(/\./g, '').replace(',', '.'))) ? 0 : parseFloat($("#txtTarifaBanc").val().replace(/\./g, '').replace(',', '.'));
    var arrend = isNaN(parseFloat($("#txtArredondamento").val().replace(/\./g, '').replace(',', '.'))) ? 0 : parseFloat($("#txtArredondamento").val().replace(/\./g, '').replace(',', '.'));
    var descImp = isNaN(parseFloat($("#txtDescontoImposto").val().replace(/\./g, '').replace(',', '.'))) ? 0 : parseFloat($("#txtDescontoImposto").val().replace(/\./g, '').replace(',', '.'));
    var jrBaixa = isNaN(parseFloat($("#txtJurosBaixa2").val().replace(/\./g, '').replace(',', '.'))) ? 0 : parseFloat($("#txtJurosBaixa2").val().replace(/\./g, '').replace(',', '.'));
    var descBaixa = isNaN(parseFloat($("#txtDescontoBaixa").val().replace(/\./g, '').replace(',', '.'))) ? 0 : parseFloat($("#txtDescontoBaixa").val().replace(/\./g, '').replace(',', '.'));
    var vlrTotal = 0;  
        if (vlrJuros !== 0)
            vlrTotal = vlrFatura * (vlrJuros / 100);
        else
            vlrTotal = vlrFatura;

        if (jrBaixa !== 0)
            vltTotal = vltTotal * (jrBaixa / 100);

        vlrTotal = vlrTotal + tarifa + arrend;
        vlrTotal = vlrTotal - (vlrDesc + descBaixa + descImp);

        $("#txtValorLiquido").val(vlrTotal.toLocaleString('pt-BR', formato).replace("R$", ""));
}

我得到的错误是

Uncaught TypeError: Cannot convert object to primitive value
    at parseFloat (<anonymous>)
    at Object.CalculaValores (ManutencaoFatura.js:415)
    at Object.<anonymous> (ManutencaoFatura.js:399)
    at j (DXR.axd?r=1_228-Qa59g:2)
    at Object.fireWith [as resolveWith] (DXR.axd?r=1_228-Qa59g:2)
    at x (DXR.axd?r=1_228-Qa59g:5)
    at XMLHttpRequest.b (DXR.axd?r=1_228-Qa59g:5) CalculaValores    @   ManutencaoFatura.js:415 (anonymous) @   ManutencaoFatura.js:399 j   @   DXR.axd?r=1_228-Qa59g:2 fireWith    @   DXR.axd?r=1_228-Qa59g:2 x   @   DXR.axd?r=1_228-Qa59g:5 b   @   DXR.axd?r=1_228-Qa59g:5 XMLHttpRequest.send (async)      send   @   DXR.axd?r=1_228-Qa59g:5 ajax    @   DXR.axd?r=1_228-Qa59g:5 $.ajax  @   DXR.axd?r=17_42-cb59g:663 RemoverDoc    @   ManutencaoFatura.js:376 onclick @   ManutencaoFatura:1

所有值都是0.00

【问题讨论】:

  • 我编辑了您的帖子以修复格式,但请编辑您的问题以更清楚地说明您在做什么、发生了什么以及您的问题是什么。一大段代码和回溯不是一个好问题。
  • isNaN(parseFloat($("#txtValorFatura").val().replace(/\./g, '').replace(',', '.'))) ? 0 : parseFloat($("#txtValorFatura").val().replace(/\./g, '').replace(',', '.'));parseFloat($("#txtValorFatura").val().replace(/\./g, '').replace(',', '.')) || 0; 相同
  • 您在 formato 对象上缺少右花括号。另外,我建议通过定义数字格式化函数来减少代码重复。有很多 $("#txtValorFatura").val().replace(/\./g, '').replace(',', '.') 类型的代码,这使得推理变得困难。还尝试缓存变量中的值。抱歉,关于这个主题没有什么实质性内容,但我希望这些提示对你有用。

标签: javascript razor devexpress devexpress-mvc


【解决方案1】:

感谢 Andreas 使用您的评论并添加一些值我得到了解决方案

var jrBaixa = parseFloat($("#txtJurosBaixa2").val().replace(/./g, '').replace(',', '.').replace('R$', ' ').trim()) || 0;

知道它工作正常,谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-03
    • 2019-02-20
    • 2020-09-13
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    相关资源
    最近更新 更多