ラジオボタンから多くの値を合計しようとしていますが、論理的思考にいくつかの問題があります。
私はここに私のソースコードをより良い視覚化のために置きました。
したがって、例として、product_price=9.00およびradio=2.00と、別のradio、radio2=0.00があります。
ラジオをチェックすると、合計はsum = product_price + radioになりますが、問題は、radio2のラジオを変更すると、うまく機能しないことです。
ありがとう
ラジオボタンから多くの値を合計しようとしていますが、論理的思考にいくつかの問題があります。
私はここに私のソースコードをより良い視覚化のために置きました。
したがって、例として、product_price=9.00およびradio=2.00と、別のradio、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);
実を言うと。これが一番いいアイデアだと思います。
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」は価格です「Valorbase」は標準値です「arrumandoascasadecimais」は小数点以下の桁数を並べています