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

JS实现掷骰子功能时按钮仅首次点击生效需刷新才可复用问题求助

问题根因

你代码中的随机数生成逻辑仅在页面首次加载时执行了一次,全局变量x、y的值在页面加载完成后就固定不变,后续每次点击按钮调用rollDice函数,都是返回固定的x+y结果,所以你会觉得点击没有响应——实际上事件已经正常触发了,只是每次展示的内容完全一致,看起来像没有生效。

修正后的JS代码

let results = [null, null, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];

// 每次调用都生成新的1-6随机骰子点数
function rollDie(){
   return Math.floor(Math.random() * 6) + 1
}

function rollDice(){
  // 每次掷骰子都生成两个全新的点数再求和
  const x = rollDie()
  const y = rollDie()
  return x + y
}

const rollBtn = document.getElementById("roll")
rollBtn.addEventListener('click',() => {
  const k = rollDice();
  document.getElementById("result").innerHTML= `You rolled a ${k}!`
  // 如果需要统计各点数出现次数,可以在这里加计数逻辑
  results[k]++
})

console.log(rollDice());

主要修改点

  • 移除了全局定义的x、y变量,把随机数生成逻辑移到rollDie函数内部,保证每次调用都能得到新的点数
  • rollDice函数每次执行时都会生成两个新的骰子点数再求和,避免返回固定结果
  • 移除了无意义的throwDice变量:addEventListener本身没有返回值,不需要赋值给变量

修改后每次点击按钮都会生成新的骰子点数,不会再出现点击无响应的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 13:06:04