在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);
为什么呢?我错过了什么?我该如何解决这个问题?
答案 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);