计算所有输入总和

时间:2018-03-07 10:02:09

标签: javascript html

我正在尝试计算所有输入的总和。 在计算之前,所有输入都是隐藏的。我们假设有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>

2 个答案:

答案 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;
      }
    }
  });