Javascript 最终else if语句未运行

Javascript 最终else if语句未运行,javascript,Javascript,我正在尝试用JavaScript制作一个基本的井字游戏。除了最后一个空格外,电路板上的所有空格都有效,即使x和y值在if语句的范围内 我不知道为什么最后的elseif语句不起作用 var c=document.getElementById(“tictactoe”); var cx=c.getContext('2d'); var转向; var boardArray=[0,0,0, 0,0,0, 0,0,0]; 函数drawGameBoard(){ cx.线宽=20; cx.strokeStyle

我正在尝试用JavaScript制作一个基本的井字游戏。除了最后一个空格外,电路板上的所有空格都有效,即使x和y值在if语句的范围内

我不知道为什么最后的elseif语句不起作用

var c=document.getElementById(“tictactoe”);
var cx=c.getContext('2d');
var转向;
var boardArray=[0,0,0,
0,0,0,
0,0,0];
函数drawGameBoard(){
cx.线宽=20;
cx.strokeStyle=“#888”;
cx.lineCap=“圆形”;
cx.beginPath();
cx.moveTo(200,20);
cx.lineTo(200580);
cx.moveTo(400,20);
cx.lineTo(400580);
cx.移动到(20200);
cx.lineTo(580200);
cx.移动到(20400);
cx.lineTo(580400);
cx.stroke();
}
$(“#tictactoe”)。单击(功能(e){
var x=e.offsetX;
变量y=e.offsetY;
checkPos(x,y);
});
功能检查位置(x,y){
警报(x+“+”+y);
如果((x10)和(y10)){
游戏件(1);
}否则,如果((x210)和(&(y10)){
游戏片(2);
}否则,如果((x410)和(&(y10)){
游戏件(3);
}否则,如果((x10)和(y210)){
游戏片(4);
}如果((x210)和&(y210)){
游戏片(5);
}否则,如果((x410)和(y210)){
游戏件(6);
}否则,如果((x10)和(y410)){
棋子(7);
}否则如果((x210)和(&(y410)){
游戏片(8);
}否则,如果((x410)和(y410)){
游戏片(9);
}否则{
//无所事事
}
}
功能游戏件(pos){
如果(isEmpty(pos)){
警报(pos);
如果(位置==1){
cx.clearRect(80,80,50,50);
cx.fillStyle='黑色';
cx.fillRect(80,80,50,50);
} 
如果(位置==2){
cx.clearRect(280,80,50,50);
cx.fillStyle='黑色';
cx.fillRect(280,80,50,50);
} 
如果(位置==3){
cx.clearRect(480,80,50,50);
cx.fillStyle='黑色';
cx.fillRect(480,80,50,50);
} 
如果(位置==4){
cx.clearRect(80280,50,50);
cx.fillStyle='黑色';
cx.fillRect(80280,50,50);
} 
如果(位置==5){
cx.clearRect(280280,50,50);
cx.fillStyle='黑色';
cx.fillRect(280280,50,50);
}
如果(位置==6){
cx.clearRect(480280,50,50);
cx.fillStyle='黑色';
cx.fillRect(480280,50,50);
} 
如果(位置==7){
cx.clearRect(80480,50,50);
cx.fillStyle='黑色';
cx.fillRect(80480,50,50);
} 
如果(位置==8){
cx.clearRect(280480,50,50);
cx.fillStyle='黑色';
cx.fillRect(280480,50,50);
}  
如果(位置==9){
cx.clearRect(480480,50,50);
cx.fillStyle='黑色';
cx.fillRect(480480,50,50);
}  
}
}
函数isEmpty(pos){
if(板阵列[pos]==0){
返回true;
}否则{
返回false;
}
}
window.onLoad=drawGameBoard()
正文{
填充:0自动;
保证金:0自动;
}
.wrapper父项{
宽度:100%;
}
.帆布包装{
宽度:100%;
垫底:1米;
}
.ctic{
显示:块;
填充:0;
保证金:自动;
背景色:#fff;
}

您需要更改“isEmpty”函数,如下所示:

function isEmpty(pos){
   // Array indexes start with 0 not 1
   // Also it is generally better to use strict equality in my opinion
   return (boardArray[(pos - 1)] === 0);
}
数组中有9项,这意味着最后一项的“pos”是“8”而不是“9”

这是一个完整的片段,其中有一个小改动

var c=document.getElementById(“tictactoe”);
var cx=c.getContext('2d');
var转向;
var boardArray=[0,0,0,
0,0,0,
0,0,0];
函数drawGameBoard(){
cx.线宽=20;
cx.strokeStyle=“#888”;
cx.lineCap=“圆形”;
cx.beginPath();
cx.moveTo(200,20);
cx.lineTo(200580);
cx.moveTo(400,20);
cx.lineTo(400580);
cx.移动到(20200);
cx.lineTo(580200);
cx.移动到(20400);
cx.lineTo(580400);
cx.stroke();
}
$(“#tictactoe”)。单击(功能(e){
var x=e.offsetX;
变量y=e.offsetY;
checkPos(x,y);
});
功能检查位置(x,y){
警报(x+“+”+y);
如果((x10)和(y10)){
游戏件(1);
}否则,如果((x210)和(&(y10)){
游戏片(2);
}否则,如果((x410)和(&(y10)){
游戏件(3);
}否则,如果((x10)和(y210)){
游戏片(4);
}如果((x210)和&(y210)){
游戏片(5);
}否则,如果((x410)和(y210)){
游戏件(6);
}否则,如果((x10)和(y410)){
棋子(7);
}否则如果((x210)和(&(y410)){
游戏片(8);
}否则,如果((x410)和(y410)){
游戏片(9);
}否则{
//无所事事
}
}
功能游戏件(pos){
如果(isEmpty(pos)){
警报(pos);
如果(位置==1){
cx.clearRect(80,80,50,50);
cx.fillStyle='黑色';
cx.fillRect(80,80,50,50);
} 
如果(位置==2){
cx.clearRect(280,80,50,50);
cx.fillStyle='黑色';
cx.fillRect(280,80,50,50);
} 
如果(位置==3){
cx.clearRect(480,80,50,50);
cx.fillStyle='黑色';
cx.fillRect(480,80,50,50);
} 
如果(位置==4){
cx.clearRect(80280,50,50);
cx.fillStyle='黑色';
cx.fillRect(80280,50,50);
} 
如果(位置==5){
cx.clearRect(280280,50,50);
cx.fillStyle='黑色';
cx.fillRect(280280,50,50);
}
如果(位置==6){
cx.clearRect(480280,50,50);
cx.fillStyle='黑色';
cx.fillRect(480280,50,50);
} 
如果(位置==7){
cx.clearRect(80480,50,50);
cx.fillStyle='黑色';
cx.fillRect(80480,50,50);
} 
如果(位置==8){
cx.clearRect(280480,50,50);
cx.fillStyle='黑色';
cx.fillRect(280480,50,50);
}  
如果(位置==9){
cx.clearRect(480480,50,50);
cx.fillStyle='黑色';
cx.fillRect(480480,50,50);
}  
}
}
函数isEmpty(pos){
//数组索引以0而不是1开头
//在我看来,通常使用严格的平等性更好
返回(boardArray[(位置-1)]==0);
}
window.onLoad=drawGameBoard()
正文{
填充:0自动;
保证金:0自动;
}
.wrapper父项{
宽度:100%;
}
.帆布包装{
宽度:100%;
垫底:1米;
}
.ctic{
显示:块;
填充:0;
保证金:自动;
背景色:#fff;
}

您需要更改“isEmpty”函数,如下所示:

function isEmpty(pos){
   // Array indexes start with 0 not 1
   // Also it is generally better to use strict equality in my opinion
   return (boardArray[(pos - 1)] === 0);
}
您的数组中有9项