JavaScript石头剪刀布游戏if语句仅平局生效故障咨询
代码逻辑错误分析
- 判断块嵌套错误
if (PLAYER1 === "Scissors")的整个逻辑块被错误包裹在if (PLAYER1 === "Paper")的大括号内部,只有当玩家1选择Paper时才会执行Scissors相关的判断,玩家1选择Scissors或者Rock时,这部分逻辑永远不会触发。 - 缺失Rock选项的判断逻辑
仅处理了玩家1选Paper、(嵌套错误的)Scissors的情况,完全没有编写玩家1选Rock时的胜负判定规则,只要玩家1选了Rock且双方不是平局,就不会输出任何结果。 - 冗余参数问题
play函数定义了cars1、cars2两个入参,但函数内部已经通过getElementById直接获取了两个下拉框的值,两个参数完全没有被使用,属于冗余代码。
修复方案
1. 替换JS代码
$("#game").submit(function(e) { e.preventDefault(); }); function play() { const result = document.querySelector('.result'); const PLAYER1 = document.getElementById('cars1').value; const PLAYER2 = document.getElementById('cars2').value; const name1 = document.getElementById('playeronename').value; const name2 = document.getElementById('playertwoname').value; // 平局判断 if (PLAYER1 === PLAYER2) { result.textContent = "平局"; return; } // 玩家1选布的情况 if (PLAYER1 === "Paper") { result.textContent = PLAYER2 === "Rock" ? `${name1} 获胜` : `${name2} 获胜`; } // 玩家1选剪刀的情况 else if (PLAYER1 === "Scissors") { result.textContent = PLAYER2 === "Paper" ? `${name1} 获胜` : `${name2} 获胜`; } // 玩家1选石头的情况 else if (PLAYER1 === "Rock") { result.textContent = PLAYER2 === "Scissors" ? `${name1} 获胜` : `${name2} 获胜`; } }
2. 修改HTML按钮调用
把原有按钮的onclick属性改为onclick="play()"即可,删除多余的入参。
内容的提问来源于stack exchange,提问作者cherlloydfan2
相关产品推荐
相关产品推荐

