【发布时间】: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