Помогите со счетчиком js
let counter = 0;
updatePrice();
const counterValue = document.getElementById('counter-value');
const incrementBtn = document.getElementById('increment-btn');
const decrementBtn = document.getElementById('decrement-btn');
incrementBtn.addEventListener('click', () => {
counter++;
counterValue.innerHTML = counter;
updatePrice();
});
decrementBtn.addEventListener('click', () => {
if (counter > 0) {
counter--;
counterValue.innerHTML = counter;
updatePrice();
}
});
function updatePrice() {
let priceStr = parseFloat(document.getElementById('price').textContent);
let priceNum = Number(priceStr);
newPrice = counter * priceNum;
document.getElementById('price').innerHTML = newPrice;
}
<div class="age">
<p class="age_text">1 год</p>
<div class="container">
<div class="counter">
<button id="increment-btn">
+
</button>
<div id="counter-value">
0
</div>
<button id="decrement-btn">
-
</button>
</div>
</div>
<p class="price" id="price">300</p>
</div>
<div class="age">
<p class="age_text">1 год</p>
<div class="container">
<div class="counter">
<button id="increment-btn">
+
</button>
<div id="counter-value">
0
</div>
<button id="decrement-btn">
-
</button>
</div>
</div>
<p class="price" id="price">300</p>
</div>
- Блок с классом age работает только один. То есть, если я под него добавлю такой же div, то счетчик перестает работать. Не кликабелен.
- Нужно в целом сделать следующее. Есть карточка, там должно быть два блока age (1 год и 2 года). Цены в "price" будут разные. Допустим 100 рублей и 200 рублей. Нужно, чтобы js брал значение "price" у каждой карточки (их будет много), затем умножал его на значение счетчика "counter_value", которое юзер может накликать сколько угодно, и выводил общую стоимость накликанного товара для каждого блока age отдельно, допустим: 1 год - 5 + 500 рублей 2 года - 2 + 400 рублей Ниже 0 счетчик опускаться не должен, но это вроде реализовано
Источник: Stack Overflow на русском