Javascript 逻辑/布尔运算符在if-else-if语句中如何工作?

Javascript 逻辑/布尔运算符在if-else-if语句中如何工作?,javascript,tic-tac-toe,Javascript,Tic Tac Toe,我正在构建一个tic-tac-toe游戏,我试图使用if-else-if语句来表示我的获胜条件。我试过几种不同的方法来治疗我的病情。 以下是我的所有代码: var-Box1=document.getElementById(“Box1”)//获取网格点并将其放入变量中 var Box2=document.getElementById(“Box2”); var Box3=document.getElementById(“Box3”); var Box4=document.getElementByI

我正在构建一个tic-tac-toe游戏,我试图使用if-else-if语句来表示我的获胜条件。我试过几种不同的方法来治疗我的病情。 以下是我的所有代码:

var-Box1=document.getElementById(“Box1”)//获取网格点并将其放入变量中
var Box2=document.getElementById(“Box2”);
var Box3=document.getElementById(“Box3”);
var Box4=document.getElementById(“Box4”);
var Box5=document.getElementById(“Box5”);
var Box6=document.getElementById(“Box6”);
var Box7=document.getElementById(“Box7”);
var Box8=document.getElementById(“Box8”);
var Box9=document.getElementById(“Box9”);
var a1=document.getElementById(“box1”).innerHTML//获取网格点的innerHTML,以便稍后检查x或o
var a2=document.getElementById(“box2”).innerHTML;
var a3=document.getElementById(“box3”).innerHTML;
var a4=document.getElementById(“box4”).innerHTML;
var a5=document.getElementById(“box5”).innerHTML;
var a6=document.getElementById(“box6”).innerHTML;
var a7=document.getElementById(“box7”).innerHTML;
var a8=document.getElementById(“box8”).innerHTML;
var a9=document.getElementById(“box9”).innerHTML;
var playerchar=“x”//将第一个播放器设置为x
框1.添加的EventListener(“单击”,框1)//为单击网格点1、1时添加单击事件
函数box1(){
Box1.innerHTML=playerchar;//设置所单击网格点的innerHTML
Box1.removeEventListener(“单击”,Box1);//删除单击事件
checkwin();//检查win条件
如果(playerchar==“x”){//
playerchar=“o”//如果最后一个回合是x,则将其更改为o。
}
else if(playerchar==“o”){
playerchar=“x”//如果最后一个回合是o,则将其更改为x。
}
}
第2框。添加的EventListener(“单击”,第2框);
函数box2(){
Box2.innerHTML=playerchar;
框2.移除EventListener(“单击”,框2);
checkwin();
如果(playerchar==“x”){
playerchar=“o”;
}
else if(playerchar==“o”){
playerchar=“x”;
}
}
第3框。添加的EventListener(“单击”,第3框);
函数box3(){
Box3.innerHTML=playerchar;
框3.移除EventListener(“单击”,框3);
checkwin();
如果(playerchar==“x”){
playerchar=“o”;
}
else if(playerchar==“o”){
playerchar=“x”;
}
}
第4框。添加了EventListener(“单击”,第4框);
函数box4(){
Box4.innerHTML=playerchar;
框4.移除EventListener(“单击”,框4);
checkwin();
如果(playerchar==“x”){
playerchar=“o”;
}
else if(playerchar==“o”){
playerchar=“x”;
}
}
第5框。添加了EventListener(“单击”,第5框);
函数box5(){
Box5.innerHTML=playerchar;
第5框。移除EventListener(“单击”,第5框);
checkwin();
如果(playerchar==“x”){
playerchar=“o”;
}
else if(playerchar==“o”){
playerchar=“x”;
}
}
第6栏。添加的EventListener(“单击”,第6栏);
函数box6(){
Box6.innerHTML=playerchar;
checkwin();
第6框。删除EventListener(“单击”,第6框)
如果(playerchar==“x”){
playerchar=“o”;
}
else if(playerchar==“o”){
playerchar=“x”;
}
}
第7框。添加了EventListener(“单击”,第7框);
函数box7(){
Box7.innerHTML=playerchar;
框7.移除EventListener(“单击”,框7);
checkwin();
如果(playerchar==“x”){
playerchar=“o”;
}
else if(playerchar==“o”){
playerchar=“x”;
}
}
第8框。添加的EventListener(“单击”,第8框);
功能盒8(){
Box8.innerHTML=playerchar;
第8框。移除EventListener(“单击”,第8框);
checkwin();
如果(playerchar==“x”){
playerchar=“o”;
}
else if(playerchar==“o”){
playerchar=“x”;
}
}
第9栏。添加的EventListener(“单击”,第9栏);
函数box9(){
Box9.innerHTML=playerchar;
第9框。移除EventListener(“单击”,第9框);
checkwin();
如果(playerchar==“x”){
playerchar=“o”;
}
else if(playerchar==“o”){
playerchar=“x”;
}
}
函数checkwin(){
如果(a1==a2&&a1==a3&&a1==“x”| | a1==“o”){//检查最上面一行是否获胜
quit();//函数,用于了解某人获胜时会发生什么情况
}
否则如果(a4==a5&&a4==a6&&a4==“x”| a4==“o”){//检查第二行是否获胜
退出();
}
否则,如果(a7==a8&&a7==a9&&a7==“x”| | a7==“o”){//检查第三行是否获胜
退出();
}
如果(a1==a4&&a1==a7&&a1==“x”| | a1==“o”){//检查第一列是否获胜
退出();
}
如果(a2==a5&&a2==a8&&a2==“x”| | a2==“o”){//检查第二列是否获胜
退出();
}
如果(a3==a6&&a3==a9&&a3==“x”| | a3==“o”){//检查第三列是否获胜
退出();
}
如果((a1='x'| a1='o')&&a1==a5 | a1==a9){//从左上到右下检查是否获胜
退出();
}
否则如果((a3==a5&&a3==a7)和((a3==“x”| | a3==“o”){//从右上到左下检查是否获胜
退出();
}
}
函数quit(){
警惕(“某人赢了”);
}
#容器{
单元间距:0px;
边界间距:0px;
利润率:30像素;
边界塌陷:分离;
}
表tr td{
宽度:40px;
高度:40px;
边框:2件纯黑;
字体大小:35px;
文本对齐:居中;
光标:指针;
}
#集装箱tr:第一胎td
边框顶部:无
}
#容器tr:最后一个子容器td
边框底部:无
}
#集装箱tr td:第一个孩子
左边界:无;
}
#容器tr td:最后一个孩子
边界权:无;
}
TicTacToe
玩家1是x
玩家2是o

所以您想测试
A1
A5
A9
是否都包含相同的字符(x或o)并退出。否则,如果
A3
A5
A7
都包含相同的字符(“x”或“o”),则退出?类似于您发布的代码的东西应该可以正常工作

else if((a1 == 'x' || a1 == 'o') && a1==a5 && a1==a9) {
    quit();
}
else if((a3 == 'x' || a3 == 'o') && a3==a5 && a3==a7) {
    quit();
}

我知道我做错了什么。我的a1-a9变量在被点击之前得到了innerHTML,所以我所有的win条件变量都是空的。只需将变量移动到checkwin()函数即可刷新它们。

欢迎使用StackOverflow!您可能需要提供更多的上下文。是
a1
a2
。。。表示字段?如果有,哪些?你到底想检查什么?A1-9是我的HTML字段。A1是电路板的左上角,a9是右下角。