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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:57:00