2013-11-02 60 views
1

我正在使用JavaScript/jQuery和回答提示在此之後的html文件,沒有任何反應。這似乎是追加功能不起作用。我的變量不會追加

這裏是我的代碼:

<!DOCTYPE html> 
    <html> 
     <head> 
      <title> 
       Rock Paper Scissors 
      </title> 
      <script> 
       var userChoice = prompt("Do you choose rock, paper, scissors lizard or spock?"); 
       userChoice = userChoice.toLowerCase(); 
       var computerChoice = function(){ 
        var choices = ["rock", "paper", "scissors", "lizard", "spock"]; 
        var random = Math.random(); 
        var loop = true; 
        while (loop){ 
         i = 0.2; 
         j = 0; 
         if (random <= i){ 
          var choices = choices[j] 
          var loop = false; 
         } 
         else { 
          i = i +0.2; 
          j ++; 
         } 
        } 
        return choices; 
       }; 
      $(document).ready(function(){$("body").append(userChoice);}); 
      $(document).ready(function(){$("body").append(computerChoice());}); 
     </script> 
     </head> 
    <body> 
    </body> 
</html> 
+0

對數組和選定的選擇使用相同的變量'choices'並不是一個好主意。我認爲在這種情況下它確實可行,但它確實令人困惑。 – Barmar

+2

你忘了加入jquery庫 –

+0

而不是設置'loop = false',你可以使用'break;'來終止一個循環。 – Barmar

回答

1

主要的問題是,因爲你設置I = 0.2環內,你得到一個無限循環。

試試這個(小提琴:http://jsfiddle.net/5c25t/2/):

$(document).ready(function(){ 

       var userChoice = prompt("Do you choose rock, paper, scissors lizard or spock?"); 
       userChoice = userChoice.toLowerCase(); 
       var computerChoice = function(){ 
        var choices = ["rock", "paper", "scissors", "lizard", "spock"]; 
        var random = Math.random(); 
        var loop = true; 
        var i = 0.2; 
        var j = 0; 
        while (true){ 
         if (random <= i){ 
          return choices[j]        
         } 
         else { 
          i=i+ 0.2; 
          j++; 
         } 
        } 
        return choices; 
       }; 
      $("body").append(userChoice); 
      $("body").append(computerChoice()); 

}); 
3

有幾件事情錯。

  1. 你不包括jQuery的,正如其他人指出
  2. 您使用變量選擇兩次,兩個不同的值
  3. 你的循環是完全錯誤的,J重置爲0每一次,所以你 總是會選擇「岩石」
  4. 你實際上並不需要一個循環,你只需要選擇一個數組的隨機 成員

我已經洗乾淨了一下你 - jsfiddle http://jsfiddle.net/7DWhL/

<!DOCTYPE html> 
<html> 
<head> 
<title>Rock Paper Scissors</title> 
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script> 
<script> 
var userChoice = "", 
    computerChoice = "", 
    choices = ["rock", "paper", "scissors", "lizard", "spock"]; 


$(document).ready(function(){ 
    userChoice = prompt("Do you choose rock, paper, scissors lizard or spock?"); 
    userChoice = userChoice.toLowerCase(); 
    computerChoice = choices[ Math.floor(choices.length * Math.random()) ]; 

    $("body").append("<p>" + userChoice + "</p>"); 
    $("body").append("<p>" + computerChoice + "</p>"); 
}); 
</script> 
</head> 

<body> 
</body> 
</html>