我正在尝试计算所有输入的总和。 在计算之前,所有输入都是隐藏的。我们假设有30个输入,并且它们是由访问者随机显示的。
我唯一能做的就是识别显示的输入,没有类“.hidden”。但是当单击“count total”时,其输入应显示仅显示inputs.val()
的总和我相信,它应该用循环完成,但不知道。
请帮助我,实现这一目标!
let productsObj = $('.order__row');
$('.count__total').on('click', function (e) {
e.preventDefault();
for (let i = 0; i < productsObj.length; i++) {
const element = productsObj[i];
if (!$(element).hasClass('hidden')) {
// calculate the total sum
} else {
}
}
});
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class=" order__row order__row-fish hidden">
<div class="order__wrapper">
<input class="order__title" type="text" value="Fish" readonly>
</div>
<div class="order__wrapper">
<input class="order__price" type="number" value="500" readonly>
</div>
<div class="order__wrapper">
<input class="order__qnt" type="number" value="1" >
</div>
</div>
<div class=" order__row order__row-meat hidden">
<div class="order__wrapper">
<input class="order__title" type="text" value="meat" readonly>
</div>
<div class="order__wrapper">
<input class="order__price" type="number" value="500" readonly>
</div>
<div class="order__wrapper">
<input class="order__qnt" type="number" value="1" >
</div>
</div>
<a class="count__total" href="#">Count total</a>
<input class="total__price" type="text" name="Total" readonly>
答案 0 :(得分:1)
但是当&#34;总计数&#34;单击其输入应显示总和 只显示inputs.val()
仅直接获取非hidden
输入
$('.count__total').each('click', function (e) {
e.preventDefault();
var total = 0;
$('.order__row:not(.hidden)').each( function(){
total += +$(this).find( ".order__qnt" ).val(); //use .order__price if price has to be total'ed
});
console.log( total );
});
答案 1 :(得分:0)
这可以作为循环输入并对其valkue求和:
let productsObj = $('.order__row');
$('.count__total').on('click', function (e) {
e.preventDefault();
let sum = 0;
for (let i = 0; i < productsObj.length; i++) {
const element = productsObj[i];
if (!$(element).hasClass('hidden')) {
sum += $(element).find('.order__qnt').val();
// calculate the total sum
} else {
// return false;
}
}
});