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

石头剪刀布游戏按钮点击事件失效问题求助

问题出在事件监听器的回调传递方式上!

嘿,这个问题我太熟了!你现在的代码里,addEventListener的第二个参数是直接执行了playRound('paper',computerPlay()),而不是把函数本身作为点击时的回调。

具体来说:

  • 当你写playRound('paper',computerPlay())的时候,JavaScript会立刻执行这个函数,把它的返回值(比如可能是"你输了!"或者undefined)传给事件监听器。但点击事件需要的是一个函数引用——也就是当点击发生时才会去执行的函数,而不是提前跑出来的结果。
  • 这就导致页面一加载,playRound就偷偷执行了一次,但等你点击按钮的时候,因为回调根本不是可执行的函数,自然没反应啦。
怎么修复?

把playRound包装成一个匿名函数,让它只有在点击时才会被调用:

var paperButton = document.querySelector("#paper");
paperButton.addEventListener("click", function() {
  playRound('paper', computerPlay());
});

如果习惯ES6语法,用箭头函数会更简洁:

const paperButton = document.querySelector("#paper");
paperButton.addEventListener("click", () => playRound('paper', computerPlay()));

这样改完之后,每次点击按钮时,才会触发playRound,同时调用computerPlay()生成新的电脑出拳,完全符合你的预期~

内容的提问来源于stack exchange,提问作者Plínio Helpa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:28:01