@redesupar

Как правильно пройтись по всем элементам на странице?

Подскажите как правильнее пройтись по всем элементам на странице? хочу чтобы к каждой карточке товара могла меняться кол-во товара и его ссылка?
Пытаюсь через document.querySelectorAll но тоже выходит ошибка
<script>
var addToCartLink = document.querySelector('.buy_button').getAttribute('href');
var inputElement = document.querySelector('.kolvo input');
var plusButton = document.querySelector('.kolvo .plus');
var minusButton = document.querySelector('.kolvo .minus');

// Функция для обновления ссылки при изменении значения input
function updateLink() {
  var inputValue = inputElement.value;
  var newLink = addToCartLink.replace(/q=\d+/, 'q=' + inputValue);
  document.querySelector('.buy_button').setAttribute('href', newLink);
}

// plus
plusButton.addEventListener('click', function() {
  inputElement.stepUp();
  updateLink();
});

// minus
minusButton.addEventListener('click', function() {
  inputElement.stepDown();
  updateLink();
});

// Обработчик события при изменении значения input
inputElement.addEventListener('change', function() {
  updateLink();
});
</script>
<div class="cart">
<a class="buy_button" href="/addtocart.php?id=387&q=1" rel="nofollow">Добавить в корзину</a>

<div class="kolvo">
<span class="minus">-</span>
<input type="number" value="1" min="1">
<span class="plus">+</span>
</div></div>
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега JavaScript
Python, JS, WordPress, SEO, Bots, Adversting
Пытаюсь через document.querySelectorAll но тоже выходит ошибка

Надо лучше пытаться:
<script>
// Получаем все карточки товаров
const cards = document.querySelectorAll('.cart');

cards.forEach((card) => {
  const addToCartLink = card.querySelector('.buy_button');
  const inputElement = card.querySelector('.kolvo input');
  const plusButton = card.querySelector('.kolvo .plus');
  const minusButton = card.querySelector('.kolvo .minus');

  // Функция для обновления ссылки при изменении значения input
  const updateLink = () => {
    const inputValue = inputElement.value;
    const newLink = addToCartLink.getAttribute('href').replace(/q=\d+/, 'q=' + inputValue);
    addToCartLink.setAttribute('href', newLink);
  };

  // plus
  plusButton.addEventListener('click', () => {
    inputElement.stepUp();
    updateLink();
  });

  // minus
  minusButton.addEventListener('click', () => {
    inputElement.stepDown();
    updateLink();
  });

  // Обработчик события при изменении значения input
  inputElement.addEventListener('input', () => {
    updateLink();
  });
});
</script>
<div class="cart">
<a class="buy_button" href="/addtocart.php?id=387&q=1" rel="nofollow">Добавить в корзину</a>

<div class="kolvo">
<span class="minus">-</span>
<input type="number" value="1" min="1">
<span class="plus">+</span>
</div></div>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 02:11
5000 руб./за проект
01 мая 2024, в 00:29
2000 руб./за проект
01 мая 2024, в 00:20
15000 руб./за проект