0

#totalcost を常に満たす必要があります。いくつかの JavaScript 計算があり、結果は #total cost に書き込まれます。JSFiddle に配置しようとしましたが、関数のオンロードをトリガーすることに成功しませんでした。.nu​​mber 入力フィールドが変更されるたびに、.localTotal が localTotal * 数値として設定されます。つまり、.localTotal と #totalcost を常に入力する必要があります。

.price*.quantity を指定した .localTotal と、すべての .localTotals の合計を指定した #totalcost

ここにHTMLがあります

<div class="row"> <div class="col-xs-5">
<span class="glyphicon glyphicon-remove remove" style="cursor:pointer;"></span> Ventura L15220</div>
<div class="col-xs-3 price">2020.20</div>
<div class="col-xs-4"><input type="number" class="form-control quantity" value="1"></div>
<div class="localTotal"></div></div>

<div class="row"> 
<div class="col-xs-5"><span class="glyphicon glyphicon-remove remove" style="cursor:pointer;"></span> Ventura L15220</div>
<div class="col-xs-3 price">30300.20</div><div class="col-xs-4"><input type="number" class="form-control quantity" value="1"></div>
<div class="localTotal"></div></div>

<div class="col-xs-4 head " id="totalcost"></div>

そしてジャバスクリプト

 function changeQuantity(){
        $(".quantity").trigger("change");
        console.log("done")

        $('.quantity').change(calculateTotal);
        function calculateTotal(){
            $quantity=$(this);

            $price=$quantity.closest('.row').find('.price').text();
            $quantityValue=$quantity.val();
            $localTotal=$quantity.closest('.row').find('.localTotal');
            $localTotalValue=$quantityValue*$price;
            $quantity.closest('.row').find('.localTotal').text($localTotalValue);
            console.log($localTotalValue);
            var sumToTotal = 0;
            var totalSum=document.getElementById('totalcost');
            $('.localTotal').each(function(){
                sumToTotal += parseFloat($(this).text());
            });
            totalSum.innerHTML=sumToTotal+' грн';
        }

    }

changeQuantity() はオンロードでトリガーされますが、 $(".quantity").trigger("change"); にもかかわらず #totalcost と .localTotal は満たされていません:c

4

1 に答える 1

2

あなたは物事を少し混乱させていると思います。で変更イベントをバインドして.quantityいますが、で変更イベントをトリガーしています.number。また、理由はわかりませんが、なぜjQueryセレクターと「通常の」セレクターを混同しているのですか?

あなたが何をしようとしているのか正確にはわかりませんが、それがどのように機能するかは次のとおりです。

$(".quantity").on('change', function() {
    /* 
     * Your code
     * replace your 'getElementById('total cost') => $("#totalcost")
     * replace your 'totalSum.innerHTML' => totalSum.text(sumToTotal + ' грн');
     */
});

.quantity変更すると、コールバックが発生します。これは、変更イベントを手動でトリガーすることで実行できます。$('.quantity').trigger('change');

また、「常に満たされている」とはどういう意味かわかりません。いくつかのコンテキストが欠落していると思います:)

編集

気にしないでほしいのですが、コードを少しリファクタリングしました

$(".quantity").on('change', function() {
  var context = $(this).closest('.row');
  // Calculate amount
  var amount = parseFloat(context.find(".price").text()) * parseFloat($(this).text());

  // Set the amount
  context.find('.localTotal').text(amount);

  var total = 0;
  $('.localTotal').each(function(el) {
    total += parseFloat($(this).text());
  });
  $("#totalcost").text(total);
});
于 2013-11-24T00:56:55.780 に答える