为何点击ID匹配随机中奖数的按钮仍未被判定为中奖?
问题原因分析:点击中奖按钮却提示未中奖
核心问题出在中奖按钮的随机生成时机上:
- 你当前的代码里,每次点击按钮触发
handleClick函数时,都会重新调用WinnerButton(buttonCnt)生成一个全新的随机数来做判定。 - 举个实际场景:你在控制台手动调用
WinnerButton得到结果是3,这只是那一次调用的随机值;但当你点击ID为3的按钮时,handleClick里又会再次调用WinnerButton,这时候它可能生成1或2,导致你点击的按钮ID和新生成的随机数不匹配,所以会显示“Keep trying.”。 - 本质上,你没有在页面初始化时固定唯一的中奖按钮,而是让中奖目标在每次点击时都随机变化,这就导致了“控制台显示的中奖按钮”和“点击时实际判定的中奖按钮”不是同一个。
<!-- 原代码关键逻辑片段 --> <script> let buttonCnt = 3; const output = document.querySelector('#output'); function WinnerButton(buttonCnt) { let Winner = Math.ceil(Math.random() * buttonCnt); return Winner; } function handleClick(clicked_id) { // 每次点击都会重新生成随机判定值 if (Number(clicked_id) === WinnerButton(buttonCnt)) { output.textContent = "Congratulations. You have found the winner button!" } else { output.textContent = "Keep trying." } } </script>
内容的提问来源于stack exchange,提问作者Sam Lee
相关产品推荐
相关产品推荐

