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

addEventListener绑定函数时页面加载就自动触发是什么原因?

问题原因

你给addEventListener方法传递第二个参数时写了startGame(),带括号会让JavaScript在解析到这段代码时立即执行startGame函数,再把该函数的返回值作为事件处理程序绑定到mousedown事件上,所以会出现页面加载时函数就自动触发的问题。

修复方案

有两种常用修复方式:

  • 直接传递函数引用:去掉startGame后面的括号,把函数本身绑定为事件处理程序,只有触发mousedown事件时才会执行,修复后的完整代码如下:
window.onload = function() {
    id("start-btn").addEventListener("mousedown", startGame);
}
  • 如果需要给startGame传递自定义参数,可以用匿名函数/箭头函数包裹一层:
window.onload = function() {
    // 示例:给startGame传入难度参数
    id("start-btn").addEventListener("mousedown", () => startGame('hard'));
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 05:18:01