Как при нажатии на кнопки +/- значение менялось на 1, потом на 2, на 4, и т.д?

Кнопка увеличивает и уменьшает на 1, мне нужно, чтобы значения кнопки менялись от 1 до 64 в таком порядке: 1, 2, 4, 6, 8, 10, 12, 16, 20, 24, 32, 48, 56, 64. То есть простое умножение на 2 не поможет, напишите, пожалуйста, как это реализовать?

<button type="button" class="cpu_min">-</button>
    <input type="number" min="1" max="64" step="0" class="cpu_res" value="1">
    <button type="button" class="cpu_plus">+</button>

<script>
    $(".cpu_min").on("click", function() {
      var $input = $(this).parent().find(".cpu_res");
      var count = parseInt($input.val()) - 1;
      count = count < 1 ? 1 : count;
      $input.val(count);
      $input.change();
      return false;
    });
    $(".cpu_plus").on("click", function() {
      var $input = $(this).parent().find(".cpu_res");
      $input.val(parseInt($input.val()) + 1);
      $input.change();
      return false;
    });

</script>
  • Вопрос задан
  • 568 просмотров
Решения вопроса 2
Stalker_RED
@Stalker_RED
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
<button data-step="-1">-</button>
<input value="1">
<button data-step="+1">+</button>

const values = [ 1, 2, 4, 6, 8, 10, 12, 16, 20, 24, 32, 48, 56, 64 ];

for (const n of document.querySelectorAll('[data-step]')) {
  n.addEventListener('click', onClick);
}

function onClick() {
  const input = document.querySelector('input');
  const index = +this.dataset.step + values.indexOf(+input.value);
  input.value = values[Math.max(0, Math.min(values.length - 1, index))];
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы