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

时间:2019-12-02 17:38:18

标签: javascript jquery html css

我试图在幻灯片的输入范围内通过每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="">

1 个答案:

答案 0 :(得分:2)

您的代码如此工作的原因是,您给b赋值var b = $(this).val()/5;,然后将for设置为0到b。

如果您的值等于b = 6/5而不是1.2的{​​{1}}的6。

因此,在您的1中,for首先是i,它比0低,然后是1.2,它仍然比{{ 1}}。如果您想简单地解决问题,请使用1,它“返回小于或等于给定数字的最大整数” mdn link

但是我不得不说您的代码很难阅读,因此您可能要考虑在可读性和效率方面进行工作。