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

为何出现'Uncaught ReferenceError: increment is not defined'错误?代码排查

解决'Uncaught ReferenceError: increment is not defined'错误

问题原因

你的increment函数定义在DOMContentLoaded事件的回调函数内部,属于局部作用域,而HTML按钮的onclick="increment()"是在全局作用域下查找这个函数,自然找不到,所以触发了引用错误。

解决方案

方案一:用JS绑定按钮点击事件(推荐)

先修改HTML中的按钮,移除onclick属性:

<button id="increment-btn">INCREMENT</button>

然后在JS代码中添加按钮的事件监听:

document.addEventListener('DOMContentLoaded', function() {
    let count = 0
    let countEl = document.getElementById("count-el")
    // 获取按钮元素
    let incrementBtn = document.getElementById("increment-btn")
    
    function increment() {
        count = count + 1
        countEl.innerText = count;
    }
    
    increment()
    countEl.addEventListener("click", increment);
    // 给INCREMENT按钮绑定点击事件
    incrementBtn.addEventListener("click", increment);
});

方案二:将函数暴露到全局作用域(不推荐)

如果不想修改HTML,可以在JS回调里把increment函数挂载到window对象,让它成为全局函数:

document.addEventListener('DOMContentLoaded', function() {
    let count = 0
    let countEl = document.getElementById("count-el")
    
    function increment() {
        count = count + 1
        countEl.innerText = count;
    }
    
    // 把函数暴露到全局作用域
    window.increment = increment;
    
    increment()
    countEl.addEventListener("click", increment);
});

说明

优先选择方案一,这样能避免全局作用域污染,让代码结构更清晰。

内容的提问来源于stack exchange,提问作者Learning corner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 13:42:40