There are three buttons which the user can click to increment, decrement, or reset the number (which is 0 at default). I attempted to make a reset button that seemed to work because the number was set to 0, but if I clicked the increment or decrement button, it adds/subtracts and displays the number before it was reset.
let number = 0;
function increment() {
number++;
document.getElementById("number").innerHTML = number;
}
function decrement() {
number--;
document.getElementById("number").innerHTML = number;
}
function reset() {
let number = 0;
document.getElementById("number").innerHTML = number;
}
<span id="number"></span>
<button id="increment" onclick="increment()">Increment</button>
<button id="decrement" onclick="decrement()">Decrement</button>
<button id="reset" onclick="reset()">Reset</button>
Inside reset change let number = 0; with number = 0;
<button id="increment" onclick="increment()">Increment</button>
<button id="decrement" onclick="decrement()">Decrement</button>
<button id="reset" onclick="reset()">Reset</button>
<p id='number'></p>
<script>
let number = 0;
function increment() {
number++;
document.getElementById("number").innerHTML = number;
}
function decrement() {
number--;
document.getElementById("number").innerHTML = number;
}
function reset() {
number = 0;
document.getElementById("number").innerHTML = number;
}
</script>
By adding let inside your function you are creating another (local) variable called number instead of changing the already existing, global variable. Just leave it out to access the original variable:
function reset() {
number = 0;
document.getElementById("number").innerHTML = number;
}
As a side note: javascript already has a function called Number, so it is best to not use such a similar name for your variable, like count, or something a bit more descriptive like amount_of_something.
Besides the let typo in your code
on* handlers attributes. JS should be in one place only. Use addEventListener() instead.type="button" on button elements that are willingly not of type Submit (default)<span> use an <input type="number"> element, and eventually add the readonly attribute.stepUp() and stepDown() native methods// DOM utility functions:
const el = (sel, par) => (par || document).querySelector(sel);
const els = (sel, par) => (par || document).querySelectorAll(sel);
// Number inputs with arrows:
const initInputArrows = (elNum) => {
const elUp = el(".num-up", elNum);
const elDn = el(".num-down", elNum);
const elRs = el(".num-reset", elNum);
const elIn = el(".num-input", elNum);
elDn.addEventListener("pointerdown", () => elIn.stepDown());
elUp.addEventListener("pointerdown", () => elIn.stepUp());
elRs.addEventListener("pointerdown", () => elIn.value = 0);
};
els(".num").forEach(initInputArrows);
<div class="num">
<input type="number" class="num-input" min=0 max=100 step=1 value=0>
<button type="button" class="num-up">▴</button>
<button type="button" class="num-down">▾</button>
<button type="button" class="num-reset">×</button>
</div>
<div class="num">
<input type="number" class="num-input" min=0 max=100 step=0.5 value=5.5>
<button type="button" class="num-up">▴</button>
<button type="button" class="num-down">▾</button>
<button type="button" class="num-reset">×</button>
</div>