我想计算所有<select>
数据属性,并将总数输出为<span>
。
以下是选择:
<select name="product-1" id="product-1">
<option value="0" data-price="0">0 (0.00$)</option>
<option value="10" data-price="52.39">10 (52.39$)</option>
<option value="20" data-price="61.93">20 (61.93$)</option>
</select>
<select name="product-2" id="product-2">
<option value="0" data-price="0">0 (0.00$)</option>
<option value="10" data-price="57.92">10 (57.92$)</option>
<option value="20" data-price="77.81">20 (77.81$)</option>
</select>
<select name="product-3" id="product-3">
<option value="0" data-price="0">0 (0.00$)</option>
<option value="10" data-price="64.63">10 (64.63$)</option>
<option value="20" data-price="84.07">20 (84.07$)</option>
</select>
这是跨度:
<span id="total">4.99</span>
这是jQuery:
$(document).ready(function() {
delivery = 4.99, $("select").change(function() {
total = $(this).find("option:selected").data("price") + delivery, $("#total").html(total.toFixed(2))
})
});
问题:
我无法弄明白,如何将所有<select>
属性加总为一个。使用我当前的代码,它只输出最后一个更改的选项。
答案 0 :(得分:1)
最简单的方法是在更改值时循环浏览每个select
的选定选项,并保持所选价格的总计。试试这个:
$(document).ready(function() {
var delivery = 4.99;
$("select").change(function() {
var total = delivery;
$('select option:selected').each(function() {
total += parseFloat($(this).data('price'));
});
$("#total").html(total.toFixed(2))
})
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="product-1" id="product-1">
<option value="0" data-price="0">0 (0.00$)</option>
<option value="10" data-price="52.39">10 (52.39$)</option>
<option value="20" data-price="61.93">20 (61.93$)</option>
</select>
<select name="product-2" id="product-2">
<option value="0" data-price="0">0 (0.00$)</option>
<option value="10" data-price="57.92">10 (57.92$)</option>
<option value="20" data-price="77.81">20 (77.81$)</option>
</select>
<select name="product-3" id="product-3">
<option value="0" data-price="0">0 (0.00$)</option>
<option value="10" data-price="64.63">10 (64.63$)</option>
<option value="20" data-price="84.07">20 (84.07$)</option>
</select>
<span id="total">4.99</span>
答案 1 :(得分:0)
只要更改了任何选项,偶数就会触发,但它只会给你刚才更改过的价格。因为你总是希望所有3个人的总数尝试使用这个
$(document).ready(function() {
delivery = 4.99, $("select").change(function() {
total = delivery;
$("select.product").each(function(){
total+=$(this).find("option:selected").data("price");
});
$("#total").html(total.toFixed(2))
})
});