我正在尝试对单选按钮的许多值求和,但我的逻辑思维存在一些问题,
我把我的源代码放在这里是为了更好的可视化。
所以,例如,我有 product_price = 9.00 和一个收音机 = 2.00 和另一个收音机,radio2= 0.00
如果我检查收音机,总和将为 sum = product_price + radio,但问题是当我为 radio2 更改收音机时,它不能正常工作。
谢谢
我正在尝试对单选按钮的许多值求和,但我的逻辑思维存在一些问题,
我把我的源代码放在这里是为了更好的可视化。
所以,例如,我有 product_price = 9.00 和一个收音机 = 2.00 和另一个收音机,radio2= 0.00
如果我检查收音机,总和将为 sum = product_price + radio,但问题是当我为 radio2 更改收音机时,它不能正常工作。
谢谢
不知道我理解对不对......
但我想如果该选项有一些价格,您是否正在尝试求和...
如果是这样,您需要小心添加的值。
首先,创建一个名为 price 的全局变量。并将其设置为零。如果有必要,这将是您将添加的价格。默认配置,这个值会为零……所以设置为零。
当您更改选项时,首先从我们的总数中删除旧的加值。然后你检查这个选项是否有一些价值加上......如果有,你必须更新你的全局变量,并将这个新值添加到总计中。
查看代码以获取更多详细信息!
var price =0;
$('.rule input[type=radio]').change(function() {
var sum, total_current, currentPrice;
currentPrice = $(this).parent().parent().find('.price').text().replace('R$ ', '').replace('.', ',').replace(',', '.');
total_current = $('.item_price_total').text().replace('Total: R$ ', '').replace('.', ',').replace(',', '.');
sum = parseFloat(total_current) - parseFloat(price);
if (currentPrice) {
price = currentPrice;
}
else{
price = 0;
}
sum += parseFloat(price);
return $('.item_price_total').html(sum);
});</p>
亲切的问候!
我认为最好不要使用 HTML 值来计算东西。您应该从您的服务器生成一些数据,例如:
<script>
var cart = {
currency: '$',
currentTotal: 9.85
}
var products = {
10: {price: 4.5},
11: {price: 5.8}
};
</script>
这样您就可以使用您的商品 ID 轻松找到价格。
然后,使用标签的“for”属性更合乎逻辑,并且在我看来更漂亮:
<input id="choise_items_2__10" name="choise_items[2][]" type="radio" value="10">
<label class="radio" for="choise_items_2__10">Sanduíche 15 cm</label>
最后,您应该使用全局价格,它更合乎逻辑,并且当您回顾代码时会更好。
与获取 jQuery 元素的方式相同,请不要犹豫添加步骤:
var $radioItem = $(this),
$item = $radioItem.parent(),
// we use the context argument
// same as $item.find('price')
$priceItem = $('.price', $item);
您可以在此处找到更多详细信息:http: //jsfiddle.net/zEaw6/19/
老实说。我认为这是最好的主意。
不要像 SuperSkunk 所说的那样获得用户文本的值 html。但取自 HTML。为您的 html 创建一个属性并获取从中添加的值。
代码在这里:
var price =9.95; //Valor base
$('.rule input[type=radio]').change(function() {
var checkeds = $(".rule").find("input[type=radio]:checked");
var plus = 0;
for(var i =0; i<checkeds.length;i++)
{
plus += parseFloat($(checkeds[i]).attr("data-preco"));
}
//arrumando as casas decimais
var rounded = Math.round((plus+price)*100)/100;
return $('.item_price_total').html(rounded);
});
“preco”是价格 “Valor base”是标准值 “arrumando as casa decimais”是排列小数位