【问题标题】:rock paper scissors window.alert not working石头剪刀布window.alert不工作
【发布时间】:2017-11-27 03:57:08
【问题描述】:

我做了一个石头剪刀布游戏,但是window.alert 不工作,所以用户看不到他们是否赢了!我将如何解决这个问题? 这是我的 JS:

var userChoice = prompt("Do you choose rock, paper or scissors?");
var computerChoice = Math.random();
if (computerChoice < 0.34) {
    computerChoice = "rock";
} else if(computerChoice <= 0.67) {
    computerChoice = "paper";
} else {
    computerChoice = "scissors";
} console.log("Computer: " + computerChoice);

var compare = function(choice1, choice2) {
 if(choice1 === choice2) {
    return "The result is a tie!";
      window.alert("Wait what. We tied?");
    }

    else if(choice1 === "rock") {

        if(choice2 === "scissors") {
            return "rock wins";
              window.alert("What? Why u crush my scissors :<. I guess you won!");
        }
        else {
            return "paper wins";
            window.alert("Got a present for you! Just kidding lol its a rock packed in paper. Imma throw it at you and you will die.");
        }
    }
    if(choice1 === "paper")
        if(choice2 ==="rock"){
            return "paper wins";
            window.alert("Your paper, Vs my Rock! Hah! I won!");
        }
    if(choice1 === "scissors"){
        if(choice2 ==="rock"){
            return "rock wins";
              window.alert("I just crushed your scissors fam. I won. ezpz take the L");
        }
    else{
        return "scissors wins";
          window.alert("You spooked m8? My scissors cut you in 326 pieces! >:D");
         }
    }
};
compare(userChoice,computerChoice);

其他一切正常,但它只是打印到控制台。 感谢您的帮助

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    警报无法访问,因为您在调用它们之前有一个 return 语句,它会退出函数。而且你缺少一个花括号,它需要一个额外的 else,一旦我正确缩进代码就很容易发现。

    试试:

    var computerChoice = Math.random();
    
    if (computerChoice < 0.34) {
      computerChoice = "rock";
    } else if(computerChoice <= 0.67) {
      computerChoice = "paper";
    } else {
      computerChoice = "scissors";
    } console.log("Computer: " + computerChoice);
    
    var compare = function(choice1, choice2) {
      if(choice1 === choice2) {
        return "The result is a tie!";
        window.alert("Wait what. We tied?");
      } else {
        if(choice1 === "rock") {
          if(choice2 === "scissors") {
            alert("What? Why u crush my scissors :<. I guess you won!");
            return "rock wins";
          } else {
            alert("Got a present for you! Just kidding lol its a rock packed in paper. Imma throw it at you and you will die.");
            return "paper wins";
    
          }
        }
    
        if(choice1 === "paper") {
          if(choice2 ==="rock") {
            alert("Your paper, Vs my Rock! Hah! I won!");
            return "paper wins";  
          }
        }
    
        if (choice1 === "scissors") {
          if(choice2 ==="rock"){
            alert("I just crushed your scissors fam. I won. ezpz take the L");
            return "rock wins";  
          } else {
            return "scissors wins";
          }
        }
    };
    compare(userChoice,computerChoice);
    

    【讨论】:

    • 另外,这在没有 window.alert 的情况下也可以工作,只需要警报。不需要变量。
    【解决方案2】:

    你错过了一些

    else
    

    还有一些花括号

    请修正你的缩进._.

    【讨论】:

      【解决方案3】:

      除了一个,返回在警报之前。一个 return 会让你退出一个函数,其余的行不运行,尝试切换它们

      【讨论】:

        【解决方案4】:

        程序无法访问 window.alert() 调用。当程序遇到 return 语句时,执行返回到调用函数的位置。您必须将 window.alert() 调用移到每个 return 语句上方,以便在您希望显示警报时调用它们。

        另外,使用“窗口”。在每个警报语句中都是可选的。

        【讨论】:

        • 谢谢,成功了;但是没有窗口我将如何使用它。?我需要声明一个变量吗?或者我可以发出警报吗? (或 .alert)
        • 无需声明变量。因为 window 是一个全局对象,你可以通过它的简写来调用 alert()。在这里查看答案:stackoverflow.com/questions/13459907/…
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-10
        • 2018-04-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多