我想要做的就是检查每个输入的价格,从中得出一笔钱。
这是我的代码
function totalSum(e) {
e.preventDefault();
var unit = $("input:checked").parent("dt").siblings("dd").find("span");
total = 0;
$.each(unit, function(index, obj){
total += parseInt($(obj).text(), 10);
});
$("#totalPrice").html('<span class="count">€ ' + total + '</span> €');
}
每个单位都在其范围内找到。 Total设置为0.我尝试在每个选中的对象上调用parseInt,然后在span中添加total。在HTML中,价格如下:
<dd><span class="costo">€199</span></dd>
所以你看到有欧元标记。我担心它无法解析,是吗?因为没什么变化!我该怎么写呢? 提前致谢
好的,我感到很惭愧,但我无法让它发挥作用。我决定把代码放在最低限度,所以我试着这样做
<body>
<div class="bla"><span class="count">1</span></div>
<div class="bla"><span class="count">1</span></div>
<div class="bla"><span class="count">1</span></div>
<div id="total"></div>
<script type="text/javascript" src="js/jquery-1.9.0.min.js" /></script>
<script>
$(document).ready(function(){
function sum() {
var prices = $("div.bla").find(".count");
total= 0;
$.each(prices, function(index, obj){
total += parseFloat($(obj).text());
});
$("#total").html('<span class="count">'+total +'</span> €');
};
});
这应该有用,但什么都没有出现。有人可以这么好告诉我出了什么问题吗?!
答案 0 :(得分:1)
您只需从文本中删除该单位:
var text = $(obj).text().replace(/[€\$]/,''); // add other units if needed
total += parseInt(text, 10); // are you sure you don't prefer parseFloat ?
或者,如果您只想保留数字+
和-
,请执行
var text = $(obj).text().replace(/[^\d\-\+]/g, '');
答案 1 :(得分:1)
您只需替换任何非数字字符:
total += parseInt($(obj).text().replace(/[^\d.-]/, ''), 10);
此外,您可以unit.each()
代替$.each(unit
,但这对您尝试做的事情没有任何影响。
答案 2 :(得分:0)
更改你的parseInt以跳过第一个字符。
total += parseInt($(obj).text().substring(1),10);
答案 3 :(得分:0)
经过几天尝试和阅读最佳方式,我相信这可能是我想要实现的优雅解决方案:)
$("input").on("click", function() {
var j = $("input:checked");
t = 0;
$(j).each(function() {
t += parseInt(this.value, 10);
});
$("#total").html("<span>€ " + t + "</span>");
});