<!doctype html>
<html>
<head>
<title>Tic Tac Toe</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript"></script>
</head>
<body>
<div class="layout">
<table border="1">
<tr>
<td id="t1" onclick="over(this)"></td>
<td id="t2" onclick="over(this)"></td>
<td id="t3" onclick="over(this)"></td>
</tr>
<tr>
<td id="t4" onclick="over(this)"></td>
<td id="t5" onclick="over(this)"></td>
<td id="t6" onclick="over(this)"></td>
</tr>
<tr>
<td id="t7" onclick="over(this)"></td>
<td id="t8" onclick="over(this)"></td>
<td id="t9" onclick="over(this)"></td>
</tr>
</table>
<p id="a"></p>
<script type="text/javascript">
var turn=0;
function over(x) {
if (turn==0) {
x.innerHTML="<img src='x.png'/>";
turn=1;
}
if (turn==1) {
x.innerHTML="<img src='o.png'/>";
turn=0;
}
}
</script>
</div>
</body>
</html>
if语句不起作用。它只显示一个图像。如果转弯== 1的条件正常,则仅为第2。我试图交替插入图像。
转弯价值没有变化。在每个框中,它只插入o.png。
在开始turn =0
但始终执行if(turn==1)
条件时。
答案 0 :(得分:3)
您正在更改转弯值,然后在下一个if中检查它,因此在turn = 0
,第一个和第二个的情况下执行两个if:
if (turn==0) {
x.innerHTML="<img src='x.png'/>";
turn=1;
}
if (turn==1) {
x.innerHTML="<img src='o.png'/>";
turn=0;
}
我假设你想要else if
,这种方式只有一个如果将永远执行:
if (turn==0) {
x.innerHTML="<img src='x.png'/>";
turn=1;
}
else if (turn==1) {
x.innerHTML="<img src='o.png'/>";
turn=0;
}
答案 1 :(得分:3)
你的问题是,两个语句都在执行,因为程序进入第一个条件,设置turn=1
,然后计算第二个语句,现在是真的!
你应该写
if (turn === 0) {
x.innerHTML="<img src='x.png'/>";
turn = 1;
} else {
x.innerHTML="<img src='o.png'/>";
turn = 0;
}
顺便说一句,如果turn
仅在1
和0
之间交替,则应该将其更改为boolean类型:
even = true;
function over(x) {
if (even) {
x.innerHTML="<img src='x.png'/>";
} else {
x.innerHTML="<img src='o.png'/>";
}
even = !even;
}
答案 2 :(得分:2)
您的if条件错误放置。您正在更改变量的值,然后再次检查条件。
所以你的解决方案将是,
if (turn == 0) {
x.innerHTML="<img src='x.png'/>";
turn=1;
}
else if(turn == 1){
x.innerHTML="<img src='o.png'/>";
turn=0;
}
答案 3 :(得分:1)
您必须使用else if
而不是第二个if
:
if (turn==0) { x.innerHTML="<img src='x.png'/>"; turn=1; } else if (turn==1) { x.innerHTML="<img src='o.png'/>"; turn=0; }
现在两个if
语句都被执行,因为第一个if
语句将turn
设置为1
,第二个语句现在看到turn
是turn
等于一,因此&#34;火灾&#34;同时将o.png
设置为零并将图像设置为if
。
如果只有两个玩家在玩游戏,这里似乎是这种情况,你可以删除第二个{{1}}语句并写下:
if (turn==0) { x.innerHTML="<img src='x.png'/>"; turn=1; } else { x.innerHTML="<img src='o.png'/>"; turn=0; }
答案 4 :(得分:0)
在以下代码段中,您首先将初始值设置为等于0:
var turn = 0;
现在,在给定的代码中:
if (turn==0) {
x.innerHTML="<img src='x.png'/>";
turn=1;
}
if (turn==1) {
x.innerHTML="<img src='o.png'/>";
turn=0;
}
}
第一个条件&#39;评估为true,因为,turn确实等于0.因此,HTML DOM的内容被设置为&#39; x.png&#39;图像和转向的价值&#39;变量翻转为1.
在这种情况下,您不想执行第二个&#39;如果&# 39; 声明,因此必须替换为&#39;否则如果&#39; ,以便只评估其中一个。
正确的代码应该是:
if (turn==0) {
x.innerHTML="<img src='x.png'/>";
turn=1;
}
else if (turn==1) {
x.innerHTML="<img src='o.png'/>";
turn=0;
}
}
答案 5 :(得分:0)
只需使用返回功能结束每个例子。
var turn=0;
function over(x) {
if (turn==0) {
x.innerHTML="<img src='x.png'/>";
turn=1;return;
}
if (turn==1) {
x.innerHTML="<img src='o.png'/>";
turn=0;return;
}
}
答案 6 :(得分:-1)
条件未正确放置。如果你想在条件中执行相同的代码,请使用{...} else if {...}。