javascript - 带按钮的加/减产品
问题描述
我编写了一个代码来模拟“购物车”,通过使用“+”“-”按钮添加/删除产品,代码工作正常但仅适用于一个产品的问题,我希望代码适用于所有产品.
这里的代码:
const minusButton = document.querySelector('.minus-btn');
const plusButton = document.querySelector('.plus-btn');
const inputField = document.querySelector('.input-btn');
minusButton.addEventListener('click', function minusProduct() {
const currentValue = Number(inputField.value);
if (currentValue > 0) {
inputField.value = currentValue - 1;
} else currentValue = 0
});
plusButton.addEventListener('click', function plusProduct() {
const currentValue = Number(inputField.value);
inputField.value = currentValue + 1;
});
<!-- Product #1 -->
<div class="quantity">
<button class="plus-btn" type="button" name="button" id="plus"><img src="plus.svg" alt="" /></button>
<input type="text" value="0" id="input" />
<button class="minus-btn" type="button" name="button" id="minus"><img src="minus.svg" alt="" /></button>
</div>
<!-- Product #2 -->
<div class="quantity">
<button class="plus-btn" type="button" name="button" id="plus"><img src="plus.svg" alt="" /></button>
<input type="text" value="0" id="input" />
<button class="minus-btn" type="button" name="button" id="minus"><img src="minus.svg" alt="" /></button>
</div>
<!-- Product #3 -->
<div class="quantity">
<button class="plus-btn" type="button" name="button" id="plus"><img src="plus.svg" alt="" /></button>
<input type="text" value="0" id="input" />
<button class="minus-btn" type="button" name="button" id="minus"><img src="minus.svg" alt="" /></button>
</div>
解决方案
您需要为每个.quantity
组执行您的代码所做的事情。
但是您的html中有几个错误
- 您尝试访问
.input-btn
未应用于任何元素的 currentValue
您在声明 a 后尝试设置为 0const
何时应尝试将输入字段设置为 0- 您对无效的每个组
id
的按钮/输入使用相同的。.quantity
所以
const quantities = document.querySelectorAll('.quantity');
[...quantities].forEach(function(quantity) {
const minusButton = quantity.querySelector('.minus-btn');
const plusButton = quantity.querySelector('.plus-btn');
const inputField = quantity.querySelector('.input-btn');
minusButton.addEventListener('click', function minusProduct() {
const currentValue = Number(inputField.value);
if (currentValue > 0) {
inputField.value = currentValue - 1;
} else inputField.value = 0
});
plusButton.addEventListener('click', function plusProduct() {
const currentValue = Number(inputField.value);
inputField.value = currentValue + 1;
});
});
<!-- Product #1 -->
<div class="quantity">
<button class="plus-btn" type="button" name="button"><img src="plus.svg" alt="" /></button>
<input type="text" value="0" class="input-btn" />
<button class="minus-btn" type="button" name="button"><img src="minus.svg" alt="" /></button>
</div>
<!-- Product #2 -->
<div class="quantity">
<button class="plus-btn" type="button" name="button"><img src="plus.svg" alt="" /></button>
<input type="text" value="0" class="input-btn" />
<button class="minus-btn" type="button" name="button"><img src="minus.svg" alt="" /></button>
</div>
<!-- Product #3 -->
<div class="quantity">
<button class="plus-btn" type="button" name="button"><img src="plus.svg" alt="" /></button>
<input type="text" value="0" class="input-btn" />
<button class="minus-btn" type="button" name="button"><img src="minus.svg" alt="" /></button>
</div>
推荐阅读
- maven - 如何以传递方式排除依赖项?
- javascript - 渲染画布时单词重叠
- embedded - 带有 RTOS 和不带 RTOS 的嵌入式程序有什么区别
- python - Python 简单的音频生成器
- ios - ReactNative First Project 创建,但无法构建和运行项目
- c# - WPF / MVVM:需要帮助来修复 ContentControl + DataTemplate 的损坏绑定
- python - 即使在 forms.py 的 UserRegistrationForm 的 Meta 类中使用“排除”变量后,密码 1、密码 2 的字段也会显示(在注册页面上)
- flutter - 在 dispose() 之后调用 setState 方法?
- javascript - 在 render() 中调用函数不呈现内容
- python - 当我从 excel 文件中获取数据时,我遇到了内存错误