我正在尝试定义一个函数,该函数根据虚拟伙伴的随机选择产生不同的结果。游戏是通过提交实现的。 我创建了一个数组,然后随机选择。接下来,我试图用几个条件实现一个if语句。但是它不会返回警报。 感谢您的意见。
<h1>What is your choice?</h1><br>
<form id="d1">
<input type="radio" name="choice" value="Cooperate"> Cooperate
<input type="radio" name="choice" value="Betray"> Betray
</form>
<button onclick="submitAnswer()">Submit Answer</button>
<script>
function submitAnswer() {
var selected = document.querySelector('input[type="radio"]:checked').value;
var myArray = ['Cooperate', 'Betray'];
var rand = myArray[Math.floor(Math.random() * myArray.length)];
if (selected === "Cooperate" || rand === "Cooperate") {
alert("2");
} else if (selected === "Betray" || rand === "Cooperate") {
alert("3");
} else if (selected === "Cooperate" || rand === "Betray") {
alert("0");
} else if (selected === "Betray" || rand === "Betray") {
alert("1");
}
}
</script>
答案 0 :(得分:1)
您有一些流氓括号。在Javascript中,整个条件子句必须用方括号括起来。另外,为了防止自动提交,请将按钮的类型设置为“按钮”。试试这个:
<h1>What is your choice?</h1><br>
<form id="d1">
<input type="radio" name="choice" value="Cooperate"> Cooperate
<input type="radio" name="choice" value="Betray"> Betray
</form>
<button type="button" onclick="submitAnswer()">Submit Answer</button>
<script>
function submitAnswer() {
var selected = document.querySelector('input[type="radio"]:checked').value;
var myArray = ['Cooperate', 'Betray'];
var rand = myArray[Math.floor(Math.random() * myArray.length)];
if (selected === "Cooperate" || rand === "Cooperate") {
alert("2");
} else if (selected === "Betray" || rand === "Cooperate") {
alert("3");
} else if (selected === "Cooperate" || rand === "Betray") {
alert("0");
} else if (selected === "Betray" || rand === "Betray") {
alert("1");
}
}
</script>
答案 1 :(得分:1)
而不是所有的if / thens,您可能只有一种可能性。然后,您可以使用二进制标志和二进制or
来确定要选择的元素。 coop
将是2
或0
(在二进制10
或00
中,而背叛可能是1
或0
。在一起将产生4种不同的可能性:00
,01
,10
,11
对应于整数0到4。
const responses = [
"coop - coop",
"coop - betray",
"betray - coop",
"betray - betray"
]
function submitAnswer() {
var selected = document.querySelector('input[type="radio"]:checked').value;
var myArray = ['Cooperate', 'Betray'];
var rand = Math.floor(Math.random() * myArray.length);
// selected or'd with rand = correct array index
console.log(responses[selected | rand])
}
<h1>What is your choice?</h1><br>
<form id="d1">
<input type="radio" name="choice" value=0> Cooperate
<input type="radio" name="choice" value=2> Betray
</form>
<button onclick="submitAnswer()">Submit Answer</button>
这将使您无需很多代码即可包含许多不同的二进制选择。
答案 2 :(得分:1)
您的问题已得到回答,但我想指出,在您的if语句中,永远不会达到最后两种情况。我认为您打算使用“ &&”运算符(或者在此示例中可能缺少某些内容)。无论如何,您可以考虑将其更改为以下内容:
if ( selected === "Betray" ) {
if ( rand === "Betray" ) {
alert( "1" );
return;
}
else if ( rand === "Cooperate" ) {
alert( "2" );
return;
}
}
else if ( selected === "Cooperate" ) {
if ( rand === "Betray" ) {
alert( "3" );
return;
}
else if ( rand === "Cooperate" ) {
alert( "4" );
return;
}
}