I'm trying to implement addition / subtraction feature on my 4 different product modals. It has the same class names as follows.
<div class="input-group">
<span class="input-group-btn">
<button class="btn btn-default btn-subtract" type="button">-</button>
</span>
<input type="text" class="form-control no-padding text-center item-quantity" value="1">
<span class="input-group-btn">
<button class="btn btn-default btn-add" type="button">+</button>
</span>
</div>
Here's my JS.
var minus = document.querySelector("btn-subtract")
var add = document.querySelector("btn-add");
var quantityNumber = document.querySelector("item-quantity");
var currentValue = 1;
minus.addEventListener("click", function(){
currentValue -= 1;
quantityNumber.textContent = currentValue;
console.log(currentValue)
});
add.addEventListener("click", function() {
currentValue += 1;
quantityNumber.textContent = currentValue;
console.log(currentValue);
});
However, it's not showing anything in the input field. Any advice?
I'm trying to implement addition / subtraction feature on my 4 different product modals. It has the same class names as follows.
<div class="input-group">
<span class="input-group-btn">
<button class="btn btn-default btn-subtract" type="button">-</button>
</span>
<input type="text" class="form-control no-padding text-center item-quantity" value="1">
<span class="input-group-btn">
<button class="btn btn-default btn-add" type="button">+</button>
</span>
</div>
Here's my JS.
var minus = document.querySelector("btn-subtract")
var add = document.querySelector("btn-add");
var quantityNumber = document.querySelector("item-quantity");
var currentValue = 1;
minus.addEventListener("click", function(){
currentValue -= 1;
quantityNumber.textContent = currentValue;
console.log(currentValue)
});
add.addEventListener("click", function() {
currentValue += 1;
quantityNumber.textContent = currentValue;
console.log(currentValue);
});
However, it's not showing anything in the input field. Any advice?
quantityNumber.textContent
with quantityNumber.value
– T. Junghans
Commented
Jun 6, 2020 at 12:23
The problem was that your selectors were bad and you can't use textContent property on input field to change its value. Code below should do the trick:
var minus = document.querySelector(".btn-subtract")
var add = document.querySelector(".btn-add");
var quantityNumber = document.querySelector(".item-quantity");
var currentValue = 1;
minus.addEventListener("click", function(){
currentValue -= 1;
quantityNumber.value = currentValue;
console.log(currentValue)
});
add.addEventListener("click", function() {
currentValue += 1;
quantityNumber.value = currentValue;
console.log(currentValue);
});
There are some other issues (besides incorrect element-query) here:
.btn-minus
quantityNumber.value += 1
(even decrement/increment: e.g. quantityNumber.value++
)stepUp
/stepDown
as well as min
/max
(see B in example below)0
) allowed: use HTML input-field's min
property and/or conditionally disable minus-button
// product A
var minus_A = document.querySelector("#product_A_form .btn-subtract")
var add_A = document.querySelector("#product_A_form .btn-add");
var quantity_A = document.querySelector("#product_A_form .item-quantity");
minus_A.addEventListener("click", function(){
quantity_A.value--;
});
add_A.addEventListener("click", function() {
quantity_A.value++;
});
// product B
var minus_B = document.querySelector("#product_B_form .btn-subtract")
var add_B = document.querySelector("#product_B_form .btn-add");
var quantity_B = document.querySelector("#product_B_form .item-quantity");
// includes button minus disablement if at minimum or below
const minimum = 0;
minus_B.addEventListener("click", function(){
if (quantity_B.value <= minimum) {
minus_B.disabled = true;
return; // return to avoid decrementing
} else {
minus_B.disabled = false;
}
quantity_B.value--;
});
add_B.addEventListener("click", function() {
if (quantity_B.value > minimum) {
minus_B.disabled = false;
}
quantity_B.value++;
});
<!-- product A -->
<div id="product_A_form" class="input-group">
A
<span class="input-group-btn">
<button class="btn btn-default btn-subtract" type="button">-</button>
</span>
<input id="product_A_qty" type="text" class="form-control no-padding text-center item-quantity" value="1">
<span class="input-group-btn">
<button class="btn btn-default btn-add" type="button">+</button>
</span>
</div>
<!-- product B -->
<div id="product_B_form" class="input-group">
B
<span class="input-group-btn">
<button class="btn btn-default btn-subtract" type="button">-</button>
</span>
<input type="number" class="form-control no-padding text-center item-quantity" min="0" value="1">
<span class="input-group-btn">
<button class="btn btn-default btn-add" type="button">+</button>
</span>
</div>
Incorrect queries. You miss '.'
var minus = document.querySelector(".btn-subtract")
var add = document.querySelector(".btn-add");
var quantityNumber = document.querySelector(".item-quantity");