在我的代码中有三个框,每个框从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>
答案 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/
这就是你追求的目标吗?