如果条件正确,为什么序列不起作用?



我尝试在幻灯片的输入范围内通过每 5 个值添加 10 个单位的总和,一切正常,但由于某种原因,在 5 对 6 值之后又增加了 10 个,然后一切正常。

它现在是如何工作的: 0(0(, 1(0(, 2(0(, 3(0(,4(0(, 5(10(, 6(20(, 7(20( ...10 (20( 等

它应该如何工作: 0(0(, 1(0(, 2(0(, 3(0(, 4(0(, 5(10(, 6(10(, 7(10( ...10 (20( 等

$(document).ready(function() {
$(".in_objem").on('input', function() {
$(".range-indicator").text($(this).val());
});
$(".in_nagrev").on('input', function() {
$(".nagrev-indicator").text($(this).val());
});
$(".in_objem,.in_nagrev").on('input', function() {
var elem = 0;
var price = 0;
$(".in_objem,.in_nagrev").each(function(){
	var b = $(this).val()/5;
	var count = 0;
	if(b >= 1)
	{
		for(var i = 0; i < b; i++)
		{
			elem += 10;
			count += 10;
		}
		console.log(elem);
	}
$(this).attr("count_sum", count);
});

var v = 0;
$('.premium-inpts:checked').each(function(){
v = v + parseInt($(this).next('.flexy-block').attr("price"));
});
$("#price-board").text(v + elem);
$("#output-price").val(v + elem);
});
$(".in_objem,.in_nagrev").trigger('input');
$(".premium-inpts").on('click', function(){
var sum = 0;
var n1 = Number($('.in_objem').attr("count_sum"));
var n2 = Number($('.in_nagrev').attr("count_sum"));
sum = n1+n2;
$('.premium-inpts:checked').each(function(){
sum = sum + parseInt($(this).next('.flexy-block').attr("price"));
});
$("#price-board").text(sum);
$("#output-price").val(sum);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<div>
<span class="nagrev-indicator">1</span><span>units1</span>
</div>
<div>
<input class="in_nagrev" name="productivity1" type="range" min="1" max="30" value="1" count_sum="0">
</div>
</div>
<div>
<div>
<span class="range-indicator">1</span><span>units2</span>
</div>
<div>
<input class="in_objem" name="productivity2" type="range" min="1" max="30" value="1" count_sum="0">
</div>
</div>
<div>
<input class="premium-inpts" id="a" type="radio" value="work">
<label class="flexy-block" for="a" price="300">
<span>Work</span>
</label>
<input class="premium-inpts" id="b" type="radio" value="chill">
<label class="flexy-block" for="b" price="20">
<span>Chill</span>
</label>
</div>
<div class="motors-container">
<input class="premium-inpts" id="c" type="radio" value="Automatic">
<label class="flexy-block" for="c" price="90">
<span>Automatic</span>
</label>
<input class="premium-inpts" id="d" type="radio" value="Common">
<label class="flexy-block" for="d" price="0">
<span>Common</span>
</label>
</div>
<div class="price-board">Sum: <span id="price-board"></span></div>
<input id="output-price" name="Sum" type="hidden" value="">

你的代码之所以这样工作,是因为你给 bvar b = $(this).val()/5;值,然后你用你的 for 从 0 到 b。

比如果你的值是 6 比b = 6/5这实际上是1.2不是1.

所以,在你的for中,i首先是0低于1.2,然后是仍然低于1.21。如果您想简单解决问题,只需使用"返回小于或等于给定数字的最大整数"mdn 链接b=Math.floor($(this).val()/5;)即可。

但我不得不说你的代码很难阅读,所以你可能要考虑提高可读性,也许还要提高效率。

最新更新