Javascript 我的石头、布、剪刀的功能不起作用

Javascript 我的石头、布、剪刀的功能不起作用,javascript,function,if-statement,Javascript,Function,If Statement,我有一个函数,用来决定游戏的胜利者。出于某种原因,它将始终打印第一条if语句,即使它不正确 我试着把它们都做成if语句,改变括号,我把所有其他if语句分开,而不是只有3个,什么都不起作用 function getElem(id) { return document.getElementById(id); } var rounds; function startGame() { rounds = getElem("ROUNDS_TO_PLAY"); rounds

我有一个函数,用来决定游戏的胜利者。出于某种原因,它将始终打印第一条if语句,即使它不正确

我试着把它们都做成if语句,改变括号,我把所有其他if语句分开,而不是只有3个,什么都不起作用

function getElem(id) {
    return document.getElementById(id);
}   

var rounds;

function startGame() {
    rounds = getElem("ROUNDS_TO_PLAY");
    rounds = parseInt(rounds.value);

    document.roundsRemaining = rounds;
    getElem("ROUNDS_REMAINING").value = rounds;
}


/* Responds to user choice button click. */
function userChoice(userButton) {
    updateStats();
    displayUserChoice(userButton);
    var compChoice = getComputerChoice();
    getElem("COMPUTER_CHOICE_OUTPUT").value = compChoice;
    displayComputerChoice(compChoice);

}

function updateStats() {

    rounds=document.roundsRemaining;
    rounds--;
    document.roundsRemaining = rounds;
    getElem("ROUNDS_REMAINING").value = document.roundsRemaining;

    if (document.roundsRemaining < 1) {
        alert("Game over");
        getElem("ROCK_CHOICE").disabled=true;
        //alert(getWinner(userButton, compChoice));
    }

    //alert(getWinner());
    alert (determineWinner());
}

function getComputerChoice() {
    var r = Math.floor(Math.random() * 3)

    switch (r) {
        case 0: return "ROCK";
        case 1: return "PAPER";
        case 2: return "SCISSORS";
        default: console.log(r + " is not a valid computer choice.");
    }

}


function displayUserChoice(userButton) {
    var uco = getElem("USER_CHOICE_OUTPUT");

    if (userButton == "ROCK") {
        uco.value = "ROCK";
    } else if (userButton == "PAPER") {
        uco.value = "PAPER";
    } else if (userButton == "SCISSORS") {
        uco.value = "SCISSORS";
    } else {
        conosole.log(userButton + " is invalid!!");
    }
}
function determineWinner(userButton,compChoice) {
    if (userButton === compChoice) {
        return 'It\'s a tie!';
    }
    else if (userButton === "ROCK" && compChoice === "PAPER") {
        return 'Computer wins!';
    }
    else if (userButton === 'PAPER' && compChoice === 'SCISSORS') {
        return 'Computer wins!';
    } 
    else if (userButton === 'SCISSORS' && compChoice === 'ROCK') {
        return 'Computer wins!';
    }
    else if (userButton === 'PAPER' && compChoice === 'ROCK') 
    {
        return 'You win!';
    }
    else if (userButton === 'SCISSORS' && compChoice === 'PAPER') {
        return 'You win!';
    } 
    else {
        return 'You win!';
    }

}
函数getElem(id){ 返回文档.getElementById(id); } var轮数; 函数startName(){ 轮次=轮次(“轮次到轮次玩”); rounds=parseInt(rounds.value); document.roundsRemaining=轮数; getElem(“剩余的轮数”)。值=轮数; } /*响应用户选择按钮单击*/ 函数userChoice(userButton){ updateStats(); 显示用户选择(用户按钮); var compChoice=getComputerChoice(); getElem(“计算机选择输出”)。值=compChoice; 显示计算机选择(compChoice); } 函数updateStats(){ 轮数=文件。轮数保留; 轮--; document.roundsRemaining=轮数; getElem(“剩余的轮数”).value=document.roundsRemaining; if(文件轮维护<1){ 警报(“游戏结束”); getElem(“ROCK_CHOICE”).disabled=true; //警报(getWinner(用户按钮,compChoice)); } //警报(getWinner()); 警报(determineWinner()); } 函数getComputerChoice(){ var r=Math.floor(Math.random()*3) 开关(r){ 案例0:返回“ROCK”; 案例1:退回“文件”; 案例2:返回“剪刀”; 默认值:console.log(r+“不是有效的计算机选项。”); } } 函数displayUserChoice(用户按钮){ var uco=getElem(“用户选择输出”); 如果(userButton==“ROCK”){ uco.value=“岩石”; }else if(用户按钮==“纸张”){ uco.value=“纸张”; }else if(用户按钮==“剪刀”){ uco.value=“剪刀”; }否则{ 日志(userButton+“无效!!”); } } 函数确定浏览器(用户按钮,组件选择){ if(userButton==compChoice){ 返回“这是平局!”; } 否则如果(userButton==“ROCK”和&compChoice==“PAPER”){ 返回“计算机获胜!”; } else if(用户按钮==='PAPER'和&compChoice==='SCISSORS'){ 返回“计算机获胜!”; } 否则如果(userButton=='SCISSORS'和&compChoice=='ROCK'){ 返回“计算机获胜!”; } 否则如果(userButton=='PAPER'和&compChoice=='ROCK') { 返回“你赢了!”; } else if(用户按钮===‘剪刀’和&compChoice===‘纸’){ 返回“你赢了!”; } 否则{ 返回“你赢了!”; } } //Html分离文件

<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"><meta charset="UTF-8">
    <title>my game</title>
    <script src="rsp.js" type="text/javascript"></script>   
</head>

<body>
    Rounds to Play: <input id="ROUNDS_TO_PLAY"><br>
    <input type="button" id="START_GAME" value="Start!" onclick="startGame()">
    Rounds Remaining: <input id="ROUNDS_REMAINING"><br><br><br>

    <input type="button" id="ROCK_CHOICE" value="Rock" onclick="userChoice('ROCK')">
    <input type="button" id="PAPER_CHOICE" value="Paper" onclick="userChoice('PAPER')">
    <input type="button" id="SCISSORS_CHOICE" value="Scissors" onclick="userChoice('SCISSORS')">

    <br>
    User Chose: <input id="USER_CHOICE_OUTPUT" type="text" disabled="true"><br>
    Computer Chose: <input id="COMPUTER_CHOICE_OUTPUT" type="text" disabled="true">
</body></html>

我的游戏
要玩的回合数:
剩余轮数:



用户选择:
计算机选择:
假设输出显示计算机赢、您赢或是平局。它每一次都显示出一条领带。

函数getElem(id){ 返回文档.getElementById(id); } 函数userChoice(userButton){ 显示用户选择(用户按钮); var compChoice=getComputerChoice(); getElem(“计算机选择输出”)。值=compChoice; updateStats(); } 函数updateStats(){ log(determineWinner((document.getElementById(“用户选择输出”).value),(document.getElementById(“计算机选择输出”).value)); } 函数getComputerChoice(){ var r=Math.floor(Math.random()*3) 开关(r){ 案例0:返回“ROCK”; 案例1:退回“文件”; 案例2:返回“剪刀”; 默认值:console.log(r+“不是有效的计算机选项。”); } } 函数displayUserChoice(用户按钮){ var uco=getElem(“用户选择输出”); 如果(userButton==“ROCK”){ uco.value=“岩石”; }else if(用户按钮==“纸张”){ uco.value=“纸张”; }else if(用户按钮==“剪刀”){ uco.value=“剪刀”; }否则{ 日志(userButton+“无效!!”); } } 函数确定浏览器(用户按钮,组件选择){ if(userButton==compChoice){ 返回“这是平局!”; } 否则如果(userButton==“ROCK”和&compChoice==“PAPER”){ 返回“计算机获胜!”; } else if(用户按钮==='PAPER'和&compChoice==='SCISSORS'){ 返回“计算机获胜!”; } 否则如果(userButton=='SCISSORS'和&compChoice=='ROCK'){ 返回“计算机获胜!”; } 否则如果(userButton=='PAPER'和&compChoice=='ROCK') { 返回“你赢了!”; } else if(用户按钮===‘剪刀’和&compChoice===‘纸’){ 返回“你赢了!”; } 否则{ 返回“你赢了!”; } }

我的游戏

用户选择:
计算机选择:
如果不查看调用了什么
determineWinner
,就不可能确切地说出问题的根源,但看起来这两个参数总是相同的。请将问题编辑为可运行的
警报(determineWinner())
您没有用任何东西调用
DeterminateWinner
…您可以使用
alert()
——但实际上,您应该知道如何使用
console.log()
。浏览器有控制台。了解如何访问它们。非常适合调试。@某些性能已经确定了问题的根源。您将
determineWinner()
定义为一个接受两个值的函数,但您调用它时没有值。这意味着缺少的值是隐式的
undefined
,并且由于
undefined===undefined
true
,因此函数将其作为平分。您需要将相关的值传递给函数。然后--您需要进行更多的调试。你的问题开始演变成一个完全不同的问题。