置換が機能しないという問題があります。
alert($('input#membership_edc').next("label").html().replace(/£/g, ""));
入力後のラベルの値は £24.00 になりますが、その値を計算してから、新しい値に戻します。ポンド記号を削除していません。
どうしたの?ありがとう。
置換が機能しないという問題があります。
alert($('input#membership_edc').next("label").html().replace(/£/g, ""));
入力後のラベルの値は £24.00 になりますが、その値を計算してから、新しい値に戻します。ポンド記号を削除していません。
どうしたの?ありがとう。
置換から返される値を設定する必要があります。以下を試してください、
var $label = $('input#membership_edc').next("label");
$label.html($label.html().replace(/£/g, ""));
読み取り/変更/書き込みを行うには、次の関数パラメーターバージョンを使用し.html()
ます。
$('input#membership_edc').next("label").html(function(index, old) {
var n = parseFloat(old.replace('£', '');
return n + 10;
});
「£24.00」を「34」に置き換えます。
何も間違ってない。ここで動作しています。あなたのマークアップは大丈夫ですか?
文字列置換関数は、新しい文字列を返します。文字列自体は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 を実行する必要があるかもしれません。