У вашего кода довольно много проблем. Но проблема, о которой вы спрашиваете, проистекает из того, как вы проводите сравнение.
Вы не можете сделать это:
if (player1Choice && player2Choice == "Rock")
Что это значило по существу:
if ((player1Choice == true) && (player2Choice == "Rock"))
Вместо этого вы хотите написать его таким образом (но он все равно не будет работать из-за многих других ошибок):
if (player1Choice == player2Choice) {
$("resultOutput").value = "Both players chose " + player1Choice + ", which results in a stalemate";
}
Мало того, что у вас меньше операций сравнения, вы также экономите много строк кода!
Обратите внимание, что у вас есть дополнительные опечатки в последних 2 сравнениях, где вы ошибочно добавили ".value".
Кроме того, вы можете заметить, что функции player1Choice
и player2Choice
не являются переменными. Вы указали, что они являются обработчиками событий для событий щелчка. Возвращаемые значения не идут никуда и не будут получены функцией fightcrunch
.
Я не очень хочу испортить вам удовольствие от создания этой программы, но если вы все же сдадитесь, вы можете увидеть исправленный и функциональный код здесь (он отображается справа, если вы не хотите его видеть):
<form>
Player 1
<select id="player1">
<option value="0" selected>Paper</option>
<option value="1">Rock</option>
<option value="2">Scissors</option>
</select>
Player 2
<select id="player2">
<option value="0" selected>Paper</option>
<option value="1">Rock</option>
<option value="2">Scissors</option>
</select>
<input type="submit" id="fight" value="Fight">
</form>
<div id="resultOutput"></div>
<script>
// create our $() shortcut function for easily retrieving elements by id
var $ = function(id) {
return document.getElementById(id);
}
//function executed on page load
window.onload = function() {
//clear any previous values
document.forms[0].reset();
$("fight").onclick = fightCrunch;
}
var fightCrunch = function(){
var choices = ["Paper", "Rock", "Scissors"];
var player1 = $("player1").value;
var player2 = $("player2").value;
var result = "";
var diff = player1 - player2;
if (!diff)
result = "Both players chose " + choices[player1] + ", which results in a stalemate";
else if (diff == -1 || diff == 2)
result = "Player 1's " + choices[player1] + " beats Player 2's " + choices[player2];
else
result = "Player 2's " + choices[player2] + " beats Player 1's " + choices[player1];
$("resultOutput").innerHTML = result;
return false;
}
</script>
Удачи!
Редактировать: Использование return и глобальных переменных
var player1Choice, player2Choice;
window.onload = function () {
//clear any previous values
document.forms[0].reset();
//store value from player1Weapon radio choice with the getPlayer1Choice function
$("player1Submit").onclick = function () {
player1Choice = getPlayer1Choice();
};
//store value from player1Weapon radio choice with the getPlayer2Choice function
$("player2Submit").onclick = function () {
player2Choice = getPlayer2Choice();
};
//assign the fight button to run the fightCrunch function to determine the winner
$("fight").onclick = fightCrunch;
}
function getPlayer1Choice () {
//...
// return ...;
}
function getPlayer2Choice () {
//...
// return ...;
}