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

JavaScript猜拳游戏playerChoice值始终为0的问题求助

问题根源

你遇到的问题核心是按钮文本里的前后空格。看你的HTML代码,按钮里的文本是Rock、Paper、Scissors——前后都带空格。当你用e.target.innerHTML获取文本时,拿到的是带空格的字符串(比如" Rock "),转成大写后变成" ROCK ",而inputConverter函数里判断的是严格等于"ROCK"(无空格),所以三个条件都不满足,直接走else返回0。

解决办法

有三种简单的修复方式,选一种就行:

方式1:修改HTML去掉空格

直接把按钮里的文本前后空格删掉,让HTML变成:

<div id="choiceContainer">
  <button id="btn">Rock</button>
  <button id="btn">Paper</button>
  <button id="btn">Scissors</button>
</div>

方式2:获取文本时去除空格

在点击事件里,给playerChoice加上trim()方法,去掉前后空格:

buttonChoices.forEach(i => {
  i.addEventListener("click", (e) => {
    let playerChoice = e.target.innerHTML.trim(); // 加trim()去除前后空格
    console.log(playRound(playerChoice, getComputerChoice()));
  })
})

方式3:在playRound里统一处理

在playRound函数里,处理playerChecker的时候先trim再转大写,确保去掉空格:

function playRound(playerSelection, computerSelection) {
  let playerChecker = playerSelection.trim().toUpperCase(); // 先trim再转大写
  let computerChecker = computerSelection.toUpperCase();
  // 后面代码保持不变
}
验证修改

随便选一种方式修改后,playerChecker就会变成纯"ROCK"、"PAPER"、"SCISSORS",和inputConverter里的条件完全匹配,就能正确返回对应数值,游戏可以正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:47:45