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

为什么onclick绑定的函数未被点击就会自动执行?

问题核心原因

你在给onclick事件绑定回调时写的是doStuff(),带括号的写法会立即执行doStuff函数,并把函数的返回值(你的doStuff没有定义返回值,所以返回值为undefined)赋值给onclick,因此页面加载执行pageReady逻辑时就会直接触发doStuff,不会等到点击事件发生时才执行。

两种写法的区别:

  • doStuff():立即调用函数,得到的是函数运行后的返回结果
  • doStuff:是对函数本身的引用,传递的是完整函数体,只有在对应事件触发时才会被执行

修复方案

去掉doStuff后面的括号,把函数本身直接赋值给onclick即可:

function pageReady() {
  var buttonBox = document.getElementById("buttonBox");
  buttonBox.onclick = doStuff;

  function doStuff() {
    buttonBox.style.background = "orange";
    buttonBox.style.width = "600px";
    buttonBox.innerHTML = "<h2>SURPRISE!!</h2>";
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:36:04