在外观中添加 onlick 事件侦听器不起作用 js



这是我的项目html的样子:

<div class="content__products__item" id="item1">
<div class="content__products__item__picture">
<a href="#"><img src="images/product-tea1.jpg"></a>
</div>
<div class="content__products__item__section">green tea</div>
<div><a href="#" class="content__products__item__name">Loan si</a></div>
<div class="content__products__item__price">
<span>3.45</span> r
</div>
<div class="content__products__item__quantity clearfix">
<button class="quantity-arrow-minus">-</button>
<div class="quantity-num"><span>50</span> г</div>
<button class="quantity-arrow-plus">+</button>
<button class="quantity-add-to-basket">В корзину</button>
</div>
<div class="content__products__item__description-wraper">
<div class="content__products__item__description">
Good tea Good teaGood teaGood teaGood tea
</div>
</div>
</div>

我在 html 标记中的每个项目上添加id然后我 javascript 我拿走了我的所有项目并尝试在我的每个项目上添加 onclick 事件,但 idk 为什么当我在任何项目上打开每个加减按钮时,它只会更改最后一个项目的值。

var items = document.querySelectorAll('.content__products__item');
for (var i = 1; i < items.length; i++) {
var btnMinus = document.querySelector('#item' + i + ' .quantity-arrow-minus');
var btnPlus = document.querySelector('#item' + i + ' .quantity-arrow-plus');
var input = document.querySelector('#item' + i + ' .quantity-num span');
var currentPrice = document.querySelector('#item' + i + ' .content__products__item__price span');
var pricePerGram = currentPrice.textContent / 50;
btnPlus.onclick = function (e) {
input.textContent = +input.textContent + 50;
currentPrice.textContent = (+input.textContent * pricePerGram).toFixed(2);
}
btnMinus.onclick = function (e) {
if (input.textContent > 50) {
input.textContent = +input.textContent - 50;
currentPrice.textContent = (+input.textContent * pricePerGram).toFixed(2);
}
}
}

请帮忙!

好的,我是这样做的:

var items = document.querySelectorAll('.content__products__item');
items.forEach(function(item, i) {
var btnMinus = document.querySelector('#item' + n + ' .quantity-arrow-minus');
var btnPlus = document.querySelector('#item' + n + ' .quantity-arrow-plus');
var input = document.querySelector('#item' + n + ' .quantity-num span');
var currentPrice = document.querySelector('#item' + n + ' .content__products__item__price span');
var pricePerGram = currentPrice.textContent / 50;
btnPlus.onclick = function(e) {
input.textContent = +input.textContent + 50;
currentPrice.textContent = (+input.textContent * pricePerGram).toFixed(2);
}
btnMinus.onclick = function(e) {
if(input.textContent > 50) {
input.textContent = +input.textContent - 50;
currentPrice.textContent = (+input.textContent * pricePerGram).toFixed(2);
}
}
});

现在效果很好!

最新更新