0

選択フィールドの Jquery の数値を合計する必要があったことがわかりました。これまでのところ、私のコードは次のようになっています。

$(function() {
             $("select").change(function() { updateTotal(); });
             updateTotal();
});


function updateTotal() {
            var newTotal = 0;
            $("select option:selected").each(function() {

                var optionz = $(this).text();

                var newString = optionz.match(/{([^}]*)}/);

                console.log(newString)

                newTotal += newString;
            });
            $("#total").text("Total: " + newTotal);
}

この結果は奇妙で出力されます。

合計: 0{3.25},3.25{0},0{9.95},9.95{0},0{16.95},16.95{0},0{10.25},10.25{0},0{0},0{0 },0{0},0{0},0{0},0

ここに画像の説明を入力

私のログはFirefoxでこのように見えます。数字だけを出力する必要があると思います。

[

"{3.25}"

, 

"3.25"

]

# (line 73)

[

"{0}"

, 

"0"

]
4

3 に答える 3

2

MDN のドキュメントに記載されているように、にgフラグを指定しない場合:match()

正規表現に g フラグが含まれていない場合、regexp.exec(string) と同じ結果を返します。

したがって、使用するのと同じですregexp.exec(string)( MDN のドキュメントを参照)。

次に、ドキュメントは次のように述べています。

一致が成功した場合、exec メソッドは配列を返し、正規表現オブジェクトのプロパティを更新します。返された配列には 、最初の item として一致したテキストがあり、次に、キャプチャされたテキストを含む、一致したキャプチャ括弧ごとに 1 つのアイテムがあります。

だから、ちょうど変更

newTotal += newString;

newTotal += parseFloat(newString[1]); //The string returned by your match()
于 2013-03-19T11:49:31.180 に答える
2

あなたがしていることは、文字列を追加していると思います。代わりに、文字列を追加するのではなく、数値を追加します。

"3.5" + "," + "3.5" は "3.5,3.5" になります。

parseFloat("3.5") + parseFloat("3.5") を使用すると、必要な 7 が得られます。

于 2013-03-19T11:46:58.850 に答える
1

この方法を使用すると、唯一の数字が得られます

HTMLコード:

<select>
     <option value="0">choose{0}</option>
     <option value="123">jeroge{123}</option>
     <option value="345">geroge{345}</option>
</select>



$(function() {
             $("select").change(function() { updateTotal(); });
             updateTotal();
});


function updateTotal() {
            var newTotal = 0;
            $("select option:selected").each(function() {

               var optionz = $(this).val();



                console.log(optionz)

                newTotal += optionz;
            });
            $("#total").text("Total: " + newTotal);
}
于 2013-03-19T11:59:25.553 に答える