-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>

いくつか明確にする必要があります。皆さん、申し訳ありません。乗算を実行するキーワードを使用して関数を実行できますか? すなわち。コードは次のように記述できますか

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 に答える