【问题标题】:Adding if-else statement causes JavaScript to stop working添加 if-else 语句会导致 JavaScript 停止工作
【发布时间】:2023-09-06 05:21:02
【问题描述】:

我有一个网页设计课程的作业,我们得到了一个基本代码,我们需要修改它才能做更多事情。一旦我添加了 if,else if 语句,javascript 就会停止工作。我不知道我哪里错了。如果有人能引导我朝着正确的方向前进,我将不胜感激。 这是原始代码(附注一我们需要做的):

<!DOCTYPE html>
<!-- Finish the logic of the Rock Paper Scissors game below. 
     See the comments for instructions. -->
<html>
    <head>
    <title>RPS</title>
    <script>
    function rps() {
        userChoice = prompt("Rock, paper or scissors?");
        userPick.innerHTML = userChoice;
        computerChoice = Math.random();
        if (computerChoice < 0.34) {
            computerChoice = "rock";
        } else if (computerChoice < 0.67) {
            computerChoice = "paper";
        } else {
            computerChoice = "scissors";
        }
        computerPick.innerHTML = computerChoice;
        result = compare(userChoice, computerChoice);
        if (result == 1) {
            // set the outcome entity to say that "Player Wins!"
            // also increment the user's score.
        } else if (result == -1) {
            // set the outcome entity to say that "Computer Wins!"
            // also increment the computer's score.
        } else {
            // set the outcome entity to say "Tie"
        }
    }

    function compare(choice1, choice2) {
        // return 0 if choices are equal,
        // 1 if choice1 wins,
        // -1 if choice2 wins
    }
    </script>
    </head>
    <body>
        <h2>RockPaperScissors</h2>
        <p id="outcome">-</p>   <b> computer picks: </b>
        <p id="computerPick">-</p>  <b> player picks: </b>
        <p id="userPick">-</p>
        <!-- create p blocks to store the computer's score (number of wins)
        and the user's score. These will have to be modified by the rps function
        -->
        <button type="button" onclick="rps()">Go</button>
    </body>
</html>

这就是我改变函数比较方法的方式:

function compare(choice1, choice2) {
    // return 0 if choices are equal,
    // 1 if choice1 wins,
    // -1 if choice2 wins

    if (choice1 == "paper" && choice2 == "rock" || 
        choice1 == "rock" && choice2 == "scissors" || 
        choice1 == "scissors" && choice2 == "paper") {
        return == 1;
    }
    else if (choice1 == "paper" && choice2 == "scissors" || 
             choice1 == "rock" && choice2 == "paper" || 
             choice1 == "scissors" && choice2 == "rock") {
        return == -1;
    }
    else {
        return == 0;
    }
}

【问题讨论】:

  • @Samuel Liew:请阅读作业标签维基。不要将其添加到新问题中。

标签: javascript function if-statement


【解决方案1】:

从您的退货中删除 ==。他们应该就像......

返回 1;

== 用于比较。

【讨论】:

    【解决方案2】:

    将您的 compare 函数更改为

    function compare(choice1, choice2) {
                // return 0 if choices are equal,
                // 1 if choice1 wins,
                // -1 if choice2 wins
    
                if (choice1=="paper" && choice2=="rock"||choice1=="rock"
    && choice2=="scissors"||choice1=="scissors" && choice2=="paper"){
                    return 1;}
                else if (choice1=="paper" &&
    choice2=="scissors"||choice1=="rock" && choice2=="paper"||choice1=="scissors" &&
    choice2=="rock"){
                    return -1;}
                else {
                    return 0;}
            }
    

    【讨论】:

      【解决方案3】:
                 return 1
      

      不是

                 return == 1
      

      return 是关键字而不是变量。 = 是赋值运算符,它将运算符右侧的值放入左侧的变量中。 == 是相等运算符。

      【讨论】:

      • == 是相等运算符。
      • 我认为 OP 和 Pascal 在一起会很自在。