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

标签 javascript jquery html css

我尝试在输入范围内通过每 5 个值添加 10 个单位的总和,一切正常,但由于某种原因,在 5 on 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="">

最佳答案

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

如果你的值是 6,则 b = 6/5 实际上是 1.2 而不是 1

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

但我不得不说您的代码很难阅读,因此您可能需要考虑提高可读性和效率。

关于javascript - 如果条件正确,为什么序列不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59144058/

相关文章:

javascript - 这个url是怎么形成的呢?

javascript - 将复选框值传递给 Angular 的 ng-click

javascript - 如何在 Ionic 2 应用程序中使用 MathJax

php - 基于单选按钮启用/禁用提交按钮

javascript - Jquery 展开和折叠功能

javascript - 将类添加到表列

javascript - 我的 Javascript 代码有什么问题?

javascript - 使用箭头键导航多步骤表单?

javascript - 花式框 3 JQuery : Close gallery when click outside element

php - 当用php执行python文件时,将其放置在哪里?