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

我认为您正在做的是附加字符串。相反,您想添加数字,而不是附加字符串。

"3.5" + "," + "3.5" 会给你 "3.5,3.5"

如果你使用 parseFloat("3.5") + parseFloat("3.5") 你得到 7,这就是你想要的。

于 2013-03-19T11:46:58.850 回答
2

如果您不向 提供g标志match(),如MDN 文档所述:

如果正则表达式不包含 g 标志,则返回与 regexp.exec(string) 相同的结果。

因此,它与使用相同regexp.exec(string)(参见MDN 文档)。

然后医生说:

如果匹配成功,则 exec 方法返回一个数组并更新正则表达式对象的属性。返回的数组 将匹配的文本作为第一项然后是每个匹配的包含捕获的文本的捕获括号的一项。

所以,只要改变

newTotal += newString;

newTotal += parseFloat(newString[1]); //The string returned by your match()
于 2013-03-19T11:49:31.180 回答
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 回答