为什么我不能在2个检索值之和后执行toFixed()函数?

时间:2016-01-25 14:46:11

标签: javascript jquery javascript-objects

在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);

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

2 个答案:

答案 0 :(得分:4)

数学是错误的,因为你要将两个字符串加在一起,而不是两个数字。而他修复错误是因为你试图在字符串上使用toFixed,但这种方法只存在于数字上。

阅读.text()

时,将字符串转换为数字
var anticipoProgetto = parseFloat($("#valoreAnticipo").text()),
    saldoProgetto = parseFloat($("#valoreSaldo").text()),
    anticipoCalcolato = anticipoProgetto + saldoProgetto,
    fixed = anticipoCalcolato.toFixed(2);

答案 1 :(得分:0)

@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);