【问题标题】:Javascript getelementbyId and add to itJavascript getelementbyId 并添加到它
【发布时间】:2014-03-22 10:54:55
【问题描述】:

这可能是一个非常简单的问题,但 javascript 对我来说很新,我真的不明白为什么这不起作用。

我正在构建一个购物车,当用户将他们的国家/地区选择为英国以外的国家时,它将在总额中添加预定义的运费。默认设置为 0。

所以目前我正在整理一个非常简单的函数,这样当盒子发生变化时,它会在总数中增加 5 英镑(我相信我可以在之后计算出如何检查英国等)。

所以我的 javascript 是这样的:

function checkPostageCost() {
    var grandTotal = document.getElementById("cartGrandTotal").value;
    var shippingTotal = 5;
    var newGrandTotal = grandTotal+shippingTotal;
    document.getElementById('invoiceGrandTotal').innerHTML = newGrandTotal;
}

选择框:

<SELECT name='shippingForm_Country' id='shippingForm_Country' onChange="checkPostageCost();">
<?= $availableCountriesList ?>
</SELECT>

它从隐藏的输入框中检索总计变量,如下所示:

<input type="hidden" id="cartGrandTotal" name="cartGrandTotal" value="<?= $finalGrandTotal ?>" />

例如,如果我的总数是 5.49,那么当它尝试将 5 加到它上面时,它就会变成 5.495 - 我显然需要它变成 10.49。

我做错了什么?

【问题讨论】:

标签: javascript math add getelementbyid


【解决方案1】:

将字符串转换为数字,例如通过在其前面加上 + 或使用 parseFloat()。为避免难看的数字,最后使用toFixed()将其转换回小数点后两位数的字符串

function checkPostageCost() {
    var grandTotal = parseFloat(document.getElementById("cartGrandTotal").value);
    var shippingTotal = 5;
    var newGrandTotal = grandTotal + shippingTotal;
    document.getElementById('invoiceGrandTotal').innerHTML = newGrandTotal.toFixed(2);
}

【讨论】:

  • 谢谢。那工作得很好。为了让我格式化价格,我使用了一个 php 函数 displayAmount($amount)。我怎样才能让它在javascript中工作? document.getElementById('invoiceGrandTotal').innerHTML = "= displayAmount(""+newGrandTotal.toFixed(2)+"") ?>";
  • 你不能,因为 PHP 是服务器端,而 JS 是客户端。
  • 好的,不用担心,我会找到替代方案。感谢您的帮助
【解决方案2】:

问题是您将它们作为字符串添加,因此它只是将两个数字一个接一个地连接起来。相反,将它们转换为floats,然后进行添加,然后返回字符串以执行innerHTML 部分:

var grandTotal = parseFloat(grandTotal)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-25
    • 2023-01-13
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    相关资源
    最近更新 更多