-3

我们列出了一个庞大的费用库。有些有 10% (GST) 税,有些有自定义#.##% 税。

结果应打印如下:

123.45 美元 10% 总计:135.8 美元

123.45 美元 0% 总计:123.45 美元

123.45 美元 7% 总计:132.10 美元

为了在我们的 CMS 中打印这些结果,我们使用元数据值和关键字:

%asset_metadata_Amount%    %asset_metadata_GST%   %asset_metadata_Custom_Tax%

如果“_GST”的值为空,它将打印“_Custom_Tax”,如果它们都是空的,则不需要进行计算。

我知道 ID 有助于查询,所以:

<span id="row_1"><span id="abc">%asset_metadata_Amount%</span> <span id="def">%asset_metadata_GST%</span> <span id="xyz">%asset_metadata_Custom_Tax%</span> <span id="total"> # </span></span>

我需要提供一些澄清,向大家道歉;可以使用关键字运行函数来执行乘法吗?IE。代码可以写成

total = %_Amout% * 1.%_GST%

或者“%”符号会破坏脚本吗?

4

2 回答 2

3

javascript可以计算百分比吗?

任何带有数学运算符的语言都可以计算百分比。在您的情况下,使用您的示例标记:

var baseAmount, taxRate, tax, total;

// Get the base amount, stripping off non-floating-point-number chars,
// convert to number
baseAmount = parseFloat($("#abc").text().replace(/[^0-9\.]/, ""));

// Same with the tax rate, divide by 100
taxRate = parseFloat($("#def").text().replace(/[^0-9\.]/, "")) / 100;

// Tax is baseAmount * taxRate
tax = baseAmount * taxRate;

// Add to base to get total
total = baseAmount + tax;

现在,您必须小心 IEEE-754 浮点数的限制,这允许 ( 0.1 + 0.2 = 0.30000000000000004,例如) 中的一些不精确性,但如果您做一些Math.round事情,您应该没问题。

于 2012-07-06T12:16:53.937 回答
3

JavaScript:

$(function() {
    var rows = $(".row");
    rows.each(function(index, row) {
        var amount = parseFloat($(row).children(".amount").text());
        var gst = parseFloat($(row).children(".gst").text());
        var customTax = parseFloat($(row).children(".customTax ").text());
        var tax = (isNaN(gst) ? (!isNaN(customTax) ? customTax : 0) : gst);
        var totalSpan = $(row).children(".total");
        console.log("Amount: ", amount);
        console.log("Tax: ", tax);
        totalSpan.html("Total: " + (amount + amount * (isNaN(tax) ? 0 : tax) / 100).toFixed(2));
    });
});​

HTML:

<span id="row_1" class="row">
    <span class="amount">123.45</span>
    <span class="gst"></span> 
    <span class="customTax"></span> 
    <span class="total"><!-- # --></span>
</span>​

我也将其发布为 jsfiddle:http: //jsfiddle.net/FHMrW/1/

注意:我已将ids替换为class属性,以支持多行。

编辑:根据@tj-crowder 的评论,在此处包含代码,并toFixed总计添加。

于 2012-07-06T12:30:55.423 回答