如果声明没有执行正确的代码?

时间:2017-02-22 18:00:13

标签: javascript

所以我正在尝试使用javascript开发一个Tic Tac Toe游戏进行练习,但我遇到了障碍。我有一个if语句应该返回true,但它不是。这是一个样本。

var game = true;
var x = 'X';
var o = 'O';
var blank = '';

var turn = x;
var board = [blank, blank, blank,
             blank, blank, blank,
             blank, blank, blank];

function write() {

    $('td').click(function() {
        //Making sure that the block that was clicked can only be clicked once
        var id = $(event.target).attr('id');
        var digit = parseInt(id.slice(-1));
        //check to see of the block has been clicked on
        if (board[digit] = blank) {
            board[digit] = turn;
            $(board[digit]).html(turn.toUpperCase());
            if (turn = x) {
                turn = o;
            } else if (turn = o) {
                turn = x;
            }

        } else {
            alert("That box has already been clicked on!")
        }
    }); 

}

2 个答案:

答案 0 :(得分:1)

function playerdraw(p){ 
ctx.rect(p.x,p.y,100,150);
ctx.stroke();
//irrelevant stuff here...
ctx.drawImage(p.im,p.x,p.y+25,100,100);
}

答案 1 :(得分:1)

乍一看,你有两个问题。

首先,event未定义。在.click来电中将其定义为功能参数。

 $('td').click(function(event) { /* rest of the code */ }

其次,正如Pointy评论的那样,=用于作业,=====用于比较。 因此

if (board[digit] = blank) { /**/ }

需要

if (board[digit] === blank) { /**/ }

关于=====之间的区别,您可以在此处获取更多信息https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness

简短版本,首选===,除非您完全确定自己知道自己在做什么,并希望明确使用==