【问题标题】:Why I can't perform the toFixed() function after the sum of 2 retrieved values?为什么我不能在 2 个检索值的总和之后执行 toFixed() 函数?
【发布时间】:2016-01-25 14:46:11
【问题描述】:

在 JQuery 脚本中尝试对数字使用 toFix() JavaScript 方法时遇到以下问题。

所以我有以下情况:

var anticipoProgetto = $("#valoreAnticipo").text();
var saldoProgetto = $("#valoreSaldo").text();

var anticipoCalcolato = (saldoProgetto + anticipoProgetto);
console.log("ANTICIPO CALCOLATO: " + anticipoCalcolato);
anticipoCalcolato = anticipoCalcolato.toFixed(2);

$("#anticipoModaleUlterioreSaldo").val(anticipoCalcolato);

console.log() 显示:

ANTICIPO CALCOLATO: 2192.002200.37

所以这意味着 JavaScript 已经正确地执行了加法。

问题是我们试图执行此行以获得只有 2 位小数的值:

anticipoCalcolato = anticipoCalcolato.toFixed(2);

在 FireBug 控制台中,我收到此消息错误:

TypeError: anticipoCalcolato.toFixed is not a function
    anticipoCalcolato = anticipoCalcolato.toFixed(2);

为什么?我错过了什么?我该如何解决这个问题?

【问题讨论】:

  • 我不认为2192.002200.37 是正确添加的结果。我不知道你为什么这么认为。
  • .toFixed() 函数返回一个字符串。它适用于数字,而不是字符串。从.text() 返回的值始终是一个字符串。

标签: javascript jquery javascript-objects


【解决方案1】:

数学是错误的,因为您将两个字符串相加,而不是两个数字。而他的 toFixed 错误是因为您试图在字符串上使用 toFixed,但该方法仅存在于数字上。

阅读.text()时将字符串转换为数字

var anticipoProgetto = parseFloat($("#valoreAnticipo").text()),
    saldoProgetto = parseFloat($("#valoreSaldo").text()),
    anticipoCalcolato = anticipoProgetto + saldoProgetto,
    fixed = anticipoCalcolato.toFixed(2);

【讨论】:

    【解决方案2】:

    @espacarello 是正确的,您需要从字符串转换为数字。阅读它们时可能更符合您的意图。

    如果 #valoreAnticipo 是输入元素,请考虑切换到 .val() 而不是 .text()

    var anticipoProgetto = parseFloat($("#valoreAnticipo").text()) || 0;
    var saldoProgetto = parseFloat($("#valoreSaldo").text()) || 0;
    
    var anticipoCalcolato = (saldoProgetto + anticipoProgetto);
    console.log("ANTICIPO CALCOLATO: " + anticipoCalcolato);
    anticipoCalcolato = anticipoCalcolato.toFixed(2);
    
    $("#anticipoModaleUlterioreSaldo").val(anticipoCalcolato);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多