然后循环每个然后显示val

时间:2015-07-20 19:37:37

标签: jquery

在我的代码中有三个框,每个框从html中抓取一些数据并使用它们做一小部分,这很好。我遇到的问题是让它循环。

我想要它做的是使用下面的jQuery循环每个部分并输出正确的值。现在它的作用就是将它们捆绑在一起。

然后,一旦完成,请从每个.this-total中取出值并将它们加在一起,以获得#total

中的总值

它只适用于一个,但是当我尝试创建一个循环时它会失败。

我不是在寻找一个JavaScript替代方案,也不是对我正在尝试使用jQuery的HTML进行更改,我们非常感谢任何帮助。

var ded = 841;
var grid = 196;
var sum = parseFloat($('#mixers .mix-value').text()) / ded;
var percent = parseFloat($('#mixers .amount').text()) / 100;


$('#mixers .this-total').each(function(index) {
  $(this).val('£' + ((grid * percent) * sum).toFixed(2));
});

var total = parseFloat($('#mixers .this-total').val());

$('#total').each(function(index) {
    $(this).val( total );
});
form {
  margin: 0 auto;
  display: block;
  text-align: center;
}
form input {
  padding: 15px;
  display: inline-block;
  font-weight: bold;
  text-align: center;
}
#mixers {
  text-align: center;
  border-bottom: 1px solid gray;
  margin-bottom: 15px;
  padding-bottom: 10px;
}
section {
  padding: 5px 35px;
  display: inline-block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>


<div id="mixers">

  <section class="infora">
    <h2>Title A</h2>
    <p class="price"><span class="amount">17.95</span>
    </p>
    <div class="mix-value">70</div>
    <form>
      <input class="this-total" value="Price" readonly>
    </form>
  </section>

  <section class="infora">
    <h2>Title B</h2>
    <p class="price"><span class="amount">11.95</span>
    </p>
    <div class="mix-value">20</div>
    <form>
      <input class="this-total" value="Price" readonly>
    </form>
  </section>

  <section class="infora">
    <h2>Title C</h2>
    <p class="price"><span class="amount">13.62</span>
    </p>
    <div class="mix-value">10</div>
    <form>
      <input class="this-total" value="Price" readonly>
    </form>
  </section>

</div>

<form>
  <input id="total" value="Price" readonly>
</form>

1 个答案:

答案 0 :(得分:1)

看看这个伙伴:

var ded = 841;
var grid = 196;
var grandTotal = 0;

$('#mixers .this-total').each(function (index) {
    var percent = parseFloat($(this).closest(".infora").find(".mix-value").text())/ded;
    var sum = parseFloat($(this).closest(".infora").find(".amount").text())/100;

    var total = ((grid * percent) * sum).toFixed(2);
    grandTotal = parseFloat(grandTotal) + parseFloat(total);

    $(this).val('£' + total);
});

$("#total").val('£' + grandTotal);

见js小提琴:

https://jsfiddle.net/29ynmu6o/4/

这就是你追求的目标吗?