0

置換が機能しないという問題があります。

alert($('input#membership_edc').next("label").html().replace(/£/g, ""));

入力後のラベルの値は £24.00 になりますが、その値を計算してから、新しい値に戻します。ポンド記号を削除していません。

どうしたの?ありがとう。

4

4 に答える 4

2

置換から返される値を設定する必要があります。以下を試してください、

var $label = $('input#membership_edc').next("label");
$label.html($label.html().replace(/£/g, ""));
于 2012-04-16T15:15:34.003 に答える
2

読み取り/変更/書き込みを行うには、次の関数パラメーターバージョンを使用し.html()ます。

$('input#membership_edc').next("label").html(function(index, old) {
    var n = parseFloat(old.replace('£', '');
    return n + 10;
});

「£24.00」を「34」に置き換えます。

于 2012-04-16T15:16:25.983 に答える
0

何も間違ってない。ここで動作しています。あなたのマークアップは大丈夫ですか?

于 2012-04-16T15:17:10.720 に答える
0

文字列置換関数は、新しい文字列を返します。文字列自体はJavaScriptでは不変だと思います。ベガが持っているように:

// avoid looking this up twice
var label = alert($('input#membership_edc').next("label"); 
// replace and assign
label.html(label.html().replace(/£/g, ""));

編集:

文字列から数値を取得するには:

var amount = alert($('input#membership_edc').next("label").html().match(/£\s*([-0-9.]+)/)[1];

これは、£ の後の数字などに一致し (空白を無視)、配列のインデックス 1 を使用し、最初のグループ一致の内容 (括弧内) を含みます。

" £1.45".match(/£\s*([-0-9.]+)/)[1]; // returns "1.45"

これはまだ文字列であることに注意してください。そのため、parseFloat を実行する必要があるかもしれません。

于 2012-04-16T15:19:01.273 に答える