0

小数点以下 2 桁の書式設定については多くの質問がありますが、.val(). 数字が から引き出された文字列である場合、どのようにします.html()か?

いくつかの価格を含むテーブルがあります。これらの価格は、100.5 ドル、59.95 ドル、0 ドルなど、さまざまな小数点以下の桁数の文字列として提供されます。

各数値は小数点以下 2 桁までにする必要があります (例: $100.50、$59.95、$0.00)。

場合によっては、$ の代わりに £ が表示されることもあります。

4

2 に答える 2

0

これがあなたの目的だと思います:

$("#mytable").find("td").each(function () {
    var content = this.innerHTML;
    content = content.replace(/\$(\d*(?:\.\d*)?)/g, function (m1, m2) {
        return "$" + parseFloat(m2).toFixed(2);
    });
    this.innerHTML = content;
});

フィドル

これにより、見つかったドル記号がそれに続く数字に置き換えられ、その数字が小数点以下 2 桁に固定されて置き換えられます。


あなたのコメントに基づいて、£ と $ を許可するには、上記の代わりにこれを試してください。

content = content.replace(/([£$])(\d*(?:\.\d*)?)/g, function (m0, m1, m2) {
    return m1 +""+ parseFloat(m2).toFixed(2);
});

フィドル

[£$](いずれかのシンボルの 1 つ) をキャッチし、それを関数に渡す最初のキャプチャ グループに入れm1ます。


2番目のコメントに基づいて、通貨が含まれているcurrencyクラスにクラスを追加し、tdその中にフォーマットされた数値のみが必要で、通貨記号に触れたくない場合は、これを試してください:

$("td.currency").each(function () {
    var content = this.innerHTML;
    content = content.replace(/(\d+(?:\.\d*)?)/g, function (m1, m2) {
        return parseFloat(m2).toFixed(2);
    });
    this.innerHTML = content;
});

フィドル

セル内の数値のみ.currencyが更新されていることに注意してください。

于 2013-08-23T02:57:22.543 に答える