【问题标题】:each function for jquery calculationsjQuery计算的每个函数
【发布时间】:2018-12-29 21:19:19
【问题描述】:

这里是 codepen 的链接:to the codepen --> 注意:您必须更改 2 个值之一才能看到结果。

我有 2 个固定变量(var seiten 和 var monate)和多达 12 * 3 个“动态”变量 Starter1、KRW1、KPreis1,每个从 1 tp 12 开始(我添加了 5 个用于测试)。到目前为止,该计算有效,但仅适用于第一项。我不知道如何使用 each 函数。

$(document).ready(function() {
function compute() {
      var seiten = $('#seiten').val();
      var monate = $('#monate').val();

      var Starter1 = $('#Starter1').val();
      var KRW1 = $('#KRW1').val();
      var KPreis1 = $('#KPreis1').val();

      var Starter2 = $('#Starter2').val();
      var KRW2 = $('#KRW2').val();
      var KPreis2 = $('#KPreis2').val();

      var Starter3 = $('#Starter3').val();
      var KRW3 = $('#KRW3').val();
      var KPreis3 = $('#KPreis3').val();

      var Starter4 = $('#Starter4').val();
      var KRW4 = $('#KRW4').val();
      var KPreis4 = $('#KPreis4').val();

      var Starter5 = $('#Starter5').val();
      var KRW5 = $('#KRW5').val();
      var KPreis5 = $('#KPreis5').val();

      var total1 = (((seiten * monate - Starter1) / KRW1) * KPreis1);
      var total2 = (((seiten * monate - Starter2) / KRW2) * KPreis2);
      var total3 = (((seiten * monate - Starter3) / KRW3) * KPreis3);
      var total4 = (((seiten * monate - Starter4) / KRW4) * KPreis4);
      var total5 = (((seiten * monate - Starter5) / KRW5) * KPreis5);



      if(total1 < 0 || total1 == null) { total1 == 0 ; } else { total1; }
      if(total2 < 0 || total2 == null) { total2 == 0 ; } else { total2; }
      if(total3 < 0 || total3 == null) { total3 == 0 ; } else { total3; }
      if(total4 < 0 || total4 == null) { total4 == 0 ; } else { total4; }
      if(total5 < 0 || total5 == null) { total5 == 0 ; } else { total5; }


      var total = total1 + total2 + total3 + total4 + total5;
      if(total < 0 || total == null) { total == 0 ; } else { total ; }


      $('#total').text(total);
    }

    $('#seiten, #monate').change(compute);

  ;

});

【问题讨论】:

  • 我不确定其他项目...不确定您的意思。我能说的是你的 5 if 声明很奇怪。如果小于 0 或 null,totaln==0 but else... 什么也不做。 -- 它看起来更像是一个数学/逻辑问题,而不是编码。
  • 这个逻辑工作得很好——甚至在以前。因为对我的计算来说,totaln 是 -x 是没有意义的,所以它应该是 0。如果它不是负数,它应该是 totaln.... total1 == null 只是某种保险...
  • 好的...但是,我要说的是您可以完全删除所有else... 而且它也可以工作,因为其他部分什么都不做。

标签: jquery list each


【解决方案1】:

将每个项目包装在它自己的容器中,这样您就可以遍历每个项目。

然后,您可以使用类而不是使用 ID,并且您可以在每个项目中使用相同的类。这使它们成为标准。

一旦它们的结构相似,您就可以在每个实例中使用 find()


简化版:

function compute() {
  var seiten = $('#seiten').val();
  var monate = $('#monate').val();

  $('.item').each(function() {
    var $item = $(this)
    var Starter = $item.find('.Starter').val();
    var KRW = $item.find('.KRW').val();

    var total = seiten * Starter + monate * KRW;
    $item.find('.total').text(total);
  });
}

$('#seiten, #monate').change(compute);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <label for="seiten">Seiten:</label>
  <input type="number" name="seiten" id="seiten" value="10" />

  <label for="monate">Monate:</label>
  <input type="number" name="monate" id="monate" value="10" />

  <!-- ITEM 1-->

  <div class="item">
    <div>Item 1</div>
    <input type="hidden" class="Starter" value="2" />
    <input type="hidden" name="KRW1" class="KRW" value="2" />
    <div class="total"></div>
  </div>

  <div class="item">
    <div>Item 2</div>
    <input type="hidden" class="Starter" value="20" />
    <input type="hidden" class="KRW" value="20" />
    <div class="total"></div>
  </div>

【讨论】:

  • 这非常完美——只要不涉及 0。正如我上面提到的,因为如果需要其他命令,totaln 应该是 0,当它是负数时。
  • if(total1
猜你喜欢
  • 2022-11-19
  • 1970-01-01
  • 2021-12-19
  • 2013-02-06
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-09
相关资源
最近更新 更多