You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vanilla JS计数器问题:添加边界判断后仍出现-1值的排查

问题根源

你写的减少按钮逻辑顺序出错了:当update为0时,你先把它重置为0,但之后不管条件如何都执行了update -= 1,所以0减1直接变成-1,这就是点击后出现负数的原因。

修复方案

把判断逻辑调整为「只有当前数值大于0时,才执行减少操作」,修改后的完整代码如下:

const add = document.getElementById('inc');
const less = document.getElementById('dec');
const zero = document.getElementById('res');

let count = document.getElementById('counter');
let update = 0;

add.addEventListener( 'click' , ()=> {
    update += 1;
    count.innerHTML = update;
});

// 修复后的减少按钮逻辑
less.addEventListener( 'click' , ()=> {
    // 仅当数值大于0时才允许减少
    if (update > 0) {
        update -= 1;
    }
    count.innerHTML = update;
});

zero.addEventListener( 'click' , ()=> {
    update = 0;
    count.innerHTML = update;
});

也可以用另一种写法(先减再修正,但不如上面高效):

less.addEventListener( 'click' , ()=> {
    update -= 1;
    // 若减完后数值小于0,强制重置为0
    if (update < 0) {
        update = 0;
    }
    count.innerHTML = update;
});

两种写法都能保证计数器数值不会低于0,优先推荐第一种,因为它避免了不必要的数值变更操作。

内容的提问来源于stack exchange,提问作者OMKAR GAWDE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 05:00:53