0

ラジオボタンから多くの値を合計しようとしていますが、論理的思考にいくつかの問題があります。

私はここに私のソースコードをより良い視覚化のために置きました。

したがって、例として、product_price=9.00およびradio=2.00と、別のradio、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」は価格です「Valorbase」は標準値です「arrumandoascasadecimais」は小数点以下の桁数を並べています

于 2012-05-15T19:26:38.950 に答える