-2

I'm wondering how can I restrict a counter from going into the negative integer range.

var i=0;
const plus = function(){
    i += 1;
    document.querySelector("#demo").innerHTML = `Total Items : ${i}`;
}
const minus = function(){
    i -= 1;
    document.querySelector("#demo").innerHTML = `Total Items : ${i}`;
}
const clearCart = (() => {
    i = 0;
    document.querySelector("#demo").innerHTML = `Total Items : ${i}`;
})
cyber xD
  • 27
  • 3
  • here's the html code -https://pastebin.com/QJKXP51u here's the css code - https://pastebin.com/swBFxcp5 – cyber xD Apr 19 '22 at 13:37
  • On the first line of your `minus` function, add the code `if (i == 0) return;` . That way, it (the JS interpreter) will exit the function before it has a change to decrement `i` in the following line `i -= 1;` – Walter Stabosz Apr 19 '22 at 14:14
  • Editor's note: do not add salutations, "thanks", or personal background to posts - this is against [posting](https://meta.stackexchange.com/questions/5029/are-taglines-signatures-disallowed) and [editing](https://meta.stackoverflow.com/a/303220/11407695) guidelines. – Oleg Valter is with Ukraine Apr 19 '22 at 14:27
  • Does this answer your question? [What's the most elegant way to cap a number to a segment?](https://stackoverflow.com/questions/11409895/whats-the-most-elegant-way-to-cap-a-number-to-a-segment) – MisterMiyagi Apr 20 '22 at 08:29

1 Answers1

2

You can check if the result is negative and replace negative values with 0. This logic can be implemented using Math.max:

var i=0;
const plus = function(){
    i += 1;
    document.querySelector("#demo").innerHTML = `Total Items : ${i}`;
}
const minus = function(){
    i = Math.max(i - 1, 0);
    document.querySelector("#demo").innerHTML = `Total Items : ${i}`;
}
const clearCart = (() => {
    i = 0;
    document.querySelector("#demo").innerHTML = `Total Items : ${i}`;
})

setTimeout(() => {
  plus();
  console.log('plus()');
}, 500);
setTimeout(() => {
  minus();
  console.log('minus()');
}, 1000);
setTimeout(() => {
  minus();
  console.log('minus()');
}, 1500);
setTimeout(() => {
  minus();
  console.log('minus()');
}, 2000);
setTimeout(() => {
  plus();
  console.log('plus()');
}, 2500);
<span id="demo"></span>
jabaa
  • 5,844
  • 3
  • 9
  • 30