JavaScript 中的增量函数仅触发一次单击事件
Click event firing only once for increment function in JavaScript
第一个 if
条件多次按预期工作,但第二个和第三个条件 运行 只工作一次。如果单击 fa-plus-square
元素,则数字只会增加一次,而减号元素只会减少一次。为什么不进一步增加?
let input = document.querySelector(".quantity-input");
document.addEventListener('click', function(e) {
if (!e.target.classList.contains('quantity-input')) {
input.value = 1;
}
if (e.target.classList.contains('fa-plus-square')) {
input.value = parseInt(input.value) + 1;
}
if (e.target.classList.contains('fa-minus-square')) {
input.value = parseInt(input.value) - 1;
}
});
<p class="quantity">
<span class="quantity-text">Quantity </span><i class="far fa-minus-square quantity-icon">-</i>
<input type="number" value="1" class="quantity-input" />
<i class="far fa-plus-square quantity-icon">+</i>
</p>
您需要先检查加号和减号按钮,然后使用 else if
,这样如果两者都不成功,您只测试不点击输入字段。
否则,当您单击加号或减号按钮时,!e.target.classList.contains('quantity-input')
条件为真,因此在加号或减号之前将输入设置回 1。
let input = document.querySelector(".quantity-input");
document.addEventListener('click', function(e) {
if (e.target.classList.contains('fa-plus-square')) {
input.value = parseInt(input.value) + 1;
}
else if (e.target.classList.contains('fa-minus-square')) {
input.value = parseInt(input.value) - 1;
}
else if (!e.target.classList.contains('quantity-input')) {
input.value = 1;
}
});
<p class="quantity">
<span class="quantity-text">Quantity </span><i class="far fa-minus-square quantity-icon">-</i>
<input type="number" value="1" class="quantity-input" />
<i class="far fa-plus-square quantity-icon">+</i>
</p>
第一个 if
条件多次按预期工作,但第二个和第三个条件 运行 只工作一次。如果单击 fa-plus-square
元素,则数字只会增加一次,而减号元素只会减少一次。为什么不进一步增加?
let input = document.querySelector(".quantity-input");
document.addEventListener('click', function(e) {
if (!e.target.classList.contains('quantity-input')) {
input.value = 1;
}
if (e.target.classList.contains('fa-plus-square')) {
input.value = parseInt(input.value) + 1;
}
if (e.target.classList.contains('fa-minus-square')) {
input.value = parseInt(input.value) - 1;
}
});
<p class="quantity">
<span class="quantity-text">Quantity </span><i class="far fa-minus-square quantity-icon">-</i>
<input type="number" value="1" class="quantity-input" />
<i class="far fa-plus-square quantity-icon">+</i>
</p>
您需要先检查加号和减号按钮,然后使用 else if
,这样如果两者都不成功,您只测试不点击输入字段。
否则,当您单击加号或减号按钮时,!e.target.classList.contains('quantity-input')
条件为真,因此在加号或减号之前将输入设置回 1。
let input = document.querySelector(".quantity-input");
document.addEventListener('click', function(e) {
if (e.target.classList.contains('fa-plus-square')) {
input.value = parseInt(input.value) + 1;
}
else if (e.target.classList.contains('fa-minus-square')) {
input.value = parseInt(input.value) - 1;
}
else if (!e.target.classList.contains('quantity-input')) {
input.value = 1;
}
});
<p class="quantity">
<span class="quantity-text">Quantity </span><i class="far fa-minus-square quantity-icon">-</i>
<input type="number" value="1" class="quantity-input" />
<i class="far fa-plus-square quantity-icon">+</i>
</p>