2017-02-22 2 views
1

Так что я пытаюсь разработать игру Tic Tac Toe для практики с javascript, но я попал в блокпост. У меня есть оператор 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!") 
     } 
    }); 

} 
+4

'=' для ** присваивания **, '==' или '===' предназначены для сравнения. – Pointy

+1

Кстати, вы должны действительно задуматься о том, чтобы превратить этот один размерный массив в нечто вроде '[[b, b, b], [b, b, b], [b, b, b]]', просто предложение – ajax333221

ответ

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

Укороченный вариант, предпочитают ===, если вы не будете абсолютно уверены, вы знаете, что вы делаете и хотите явно использовать ==.

Смежные вопросы