如果条件不起作用

时间:2016-06-16 12:17:56

标签: javascript html

<!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)条件时。

7 个答案:

答案 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仅在10之间交替,则应该将其更改为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,第二个语句现在看到turnturn等于一,因此&#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 {...}。