我需要始终填写#totalcost。有一些javascript计算,结果写在#total cost中。我尝试将其放置在JSFiddle上,但触发函数onload失败。对于.number输入字段的每次更改,.localTotal都设置为localTotal *数字值。用2个词我需要始终填写.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>
和JavaScript
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
最佳答案
我认为您的想法有些混乱。您正在绑定.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);
});