0

我正在尝试对单选按钮的许多值求和,但我的逻辑思维存在一些问题,

我把我的源代码放在这里是为了更好的可视化。

所以,例如,我有 product_price = 9.00 和一个收音机 = 2.00 和另一个收音机,radio2= 0.00

如果我检查收音机,总和将为 sum = product_price + radio,但问题是当我为 radio2 更改收音机时,它不能正常工作。

谢谢

4

3 回答 3

1

不知道我理解对不对......

但我想如果该选项有一些价格,您是否正在尝试求和...

如果是这样,您需要小心添加的值。

首先,创建一个名为 price 的全局变量。并将其设置为零。如果有必要,这将是您将添加的价格。默认配置,这个值会为零……所以设置为零。

当您更改选项时,首先从我们的总数中删除旧的加值。然后你检查这个选项是否有一些价值加上......如果有,你必须更新你的全局变量,并将这个新值添加到总计中。

查看代码以获取更多详细信息!

http://jsfiddle.net/zEaw6/17/

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>

亲切的问候!

于 2012-05-15T15:22:23.703 回答
0

我认为最好不要使用 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/

于 2012-05-15T15:42:55.853 回答
0

老实说。我认为这是最好的主意。

http://jsfiddle.net/zEaw6/23/

不要像 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”是排列小数位

于 2012-05-15T19:26:38.950 回答