Хотите получить предыдущее значение выбранной кнопки

<pre>
   <div class = "quantity">
        <input type = "number" name = "qty" id = "qty" value = "1" class = "form-qty form-control" min = "1">
         <div class = "quantity-nav">
              <div class = "quantity-button quantity-up qty-up">+</div>
              <div class = "quantity-button quantity-down qty-down">-</div>
         </div>
    </div>
<pre>

Это петля.

Я хочу получить входное значение, когда я каждый раз нажимаю кнопку увеличения и уменьшения количества. Есть несколько элементов. Как найти входное значение в javascript, нажав кнопку вверх и вниз.

Пожалуйста, предоставьте код, чтобы мы могли немного понять, чего вы хотите достичь.

Kobe 21.06.2019 10:05

Поскольку это цикл, вам нужно знать о повторяющихся идентификаторах... Можете ли вы использовать jQuery lib?

Zakaria Acharki 21.06.2019 10:20

Данный coe не обеспечивает никакого цикла. Что вы пытались «получить входное значение»? Где точно вы застряли?

Nico Haase 21.06.2019 10:29

Вот рабочий пример jsfiddle.net/n6dh34zf Дайте мне знать, если это поможет

shahburhan 21.06.2019 10:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
131
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете использовать localStorage для хранения значения вашего количества, это сделает data постоянным.

Пожалуйста, проверьте приведенный ниже фрагмент кода:

const down = document.querySelector('.down');
const up = document.querySelector('.up');
const input = document.querySelector('.quantity');

// store utility function
const store = {
  existsIn: function(key) {
    return this.getFromKey(key) !== null;
  },
  getFromKey: function(key) {
    return window.localStorage.getItem(key);
  },
  add: function(key, value) {
    const storeSource = window.localStorage.setItem(key, value);
  }
}

const quantity = Object.create(store);

quantity.exists = function() {
  return this.existsIn('quantity');
}

quantity.increase = function() {
  let storedQuantity = this.exists() ? parseFloat(this.getFromKey('quantity')) : 0;
  storedQuantity = storedQuantity + 1;
  this.add('quantity', storedQuantity); 
}

quantity.decrease = function() {
  let storedQuantity = this.exists() ? parseFloat(this.getFromKey('quantity')) : 0;
  if (storedQuantity > 0) {
    storedQuantity = storedQuantity - 1;
  }

  this.add('quantity', storedQuantity);
}

quantity.show = function() {
  return this.exists() ? this.getFromKey('quantity') : 0;
}

// event listeners for up and down buttons 
up.addEventListener('click', function() {
  quantity.increase();

  // update input on button click
  input.value = quantity.show();
})

down.addEventListener('click', function() {
  quantity.decrease();

  // update input on button click
  input.value = quantity.show();
})

// update input on page load
input.value = quantity.show();

Там вы можете найти рабочую скрипку: https://jsbin.com/tavalocoti/5/edit?html, js, консоль, вывод

Ответ принят как подходящий

Вы можете добавить событие onClick с функцией parents для обнаружения входов рядом с кнопкой.

$(document).on('click','.quantity-up',function(){
  $qtyElemnt = $(this).parents('.quantity').find('.form-qty');
  $qty = $qtyElemnt.val();
  $qtyElemnt.val(Number($qty)+1);
});

$(document).on('click','.quantity-down',function(){
  $qtyElemnt = $(this).parents('.quantity').find('.form-qty');
  $qty = $qtyElemnt.val();
  $qtyElemnt.val(Number($qty)-1);
});
.quantity {
   padding: 10px;
}
.quantity-nav{
    display: inline-block;
}
.quantity-button {
    display: inline-block;
    padding: 5px;
    background-color: #c7c5c5;
    border: 1px solid #585353;
    cursor: pointer;
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<div>
  <div class = "quantity">
        <input type = "number" name = "qty" value = "1" class = "form-qty form-control" min = "1">
         <div class = "quantity-nav">
              <div class = "quantity-button quantity-up qty-up">+</div>
              <div class = "quantity-button quantity-down qty-down">-</div>
         </div>
    </div>
    <div class = "quantity">
        <input type = "number" name = "qty" value = "1" class = "form-qty form-control" min = "1">
         <div class = "quantity-nav">
              <div class = "quantity-button quantity-up qty-up">+</div>
              <div class = "quantity-button quantity-down qty-down">-</div>
         </div>
    </div>
    <div class = "quantity">
        <input type = "number" name = "qty" value = "1" class = "form-qty form-control" min = "1">
         <div class = "quantity-nav">
              <div class = "quantity-button quantity-up qty-up">+</div>
              <div class = "quantity-button quantity-down qty-down">-</div>
         </div>
    </div>
</div>

Спасибо :-)

На самом деле ваша проблема довольно легко решается. Попробуйте добавить этот скрипт в конец вашего <body>. Я предлагаю вам также внести некоторые изменения в ваш html: используйте теги <button> или <input type = "button"или даже <a> для ваших элементов управления. Я добавил некоторую логику об атрибутах min/max/step, которые вы можете установить для <input type = "number">, но это необязательно. Это зависит от вас, чтобы изменить это.

document.addEventListener("DOMContentLoaded", function() {
  const qtyWraps = document.getElementsByClassName('quantity');
  for (let i = 0; i < qtyWraps.length; i++) {
    const qtyWrap = qtyWraps.item(i);
    const input = qtyWrap.querySelector('.form-qty');
    const up = qtyWrap.querySelector('.qty-up');
    const down = qtyWrap.querySelector('.qty-down');
    const output = qtyWrap.querySelector('.output');
    up.addEventListener('click', function(e) {
      e.preventDefault();
      addValue(1);
    });
    down.addEventListener('click', function(e) {
      e.preventDefault();
      addValue(-1);
    });
    input.addEventListener('input', function() {
      output.textContent = input.value
    });
    const addValue = function(value) {
      const current = parseInt(input.value);
      const min = input.getAttribute('min') || -Infinity;
      const max = input.getAttribute('max') || Infinity;
      const step = input.getAttribute('step') || 1;
      const newValue = Math.min(max, Math.max(min, current + value * step));
      input.value = newValue;
      if (newValue <= min) down.setAttribute('disabled', 'disabled');
      else down.removeAttribute('disabled');
      if (newValue >= max) up.setAttribute('disabled', 'disabled');
      else up.removeAttribute('disabled');
      input.dispatchEvent(new Event('input'));
    }
    addValue(0)
  }
});
.quantity {
  display: block;
  width: 500px;
  margin: auto;
  text-align: center;
}

.quantity .form-qty {
  display: inline-block;
}

.quantity .quantity-nav {
  display: inline-block;
}

.quantity .output {
  background: yellow;
  width: 500px;
  margin: 1em auto 0;
}
<div class = "quantity">
  <input type = "number" name = "qty" id = "qty" value = "1" class = "form-qty form-control" min = "1">
  <div class = "quantity-nav">
    <button class = "quantity-button quantity-up qty-up">+</button>
    <button class = "quantity-button quantity-down qty-down">-</button>
  </div>
  <!-- I put it here to show the output result -->
  <div class = "output">1</div>
</div>

Другие вопросы по теме