2014-05-13 55 views
0

我正在尝试实现Tic Tac Toe游戏的逻辑,我几乎已经制作了一个逻辑,但是我在将数据推送到数组时被卡住了。这是我创建的一个小提琴。无法将数据推入阵列

http://jsfiddle.net/afzaal_ahmad_zeeshan/6bgjp/1/

让我解释一下整个事情给你!

我正在尝试使用表中的9个td作为可能获胜的8个行。为此,我根据它们在表格中的位置给出了一些tds类名。

的HTML是简单

<div class="vicvacvoe"> 
    <table> 
     <tr> 
      <td class="line1 line4 line7"></td> 
      <td class="line1 line5"></td> 
      <td class="line1 line6 line8"></td> 
     </tr> 
     <tr> 
      <td class="line2 line4"></td> 
      <td class="line2 line5 line7 line8"></td> 
      <td class="line2 line6"></td> 
     </tr> 
     <tr> 
      <td class="line3 line4 line8"></td> 
      <td class="line3 line5"></td> 
      <td class="line3 line6 line7"></td> 
     </tr> 
    </table> 
</div> 

只是一个简单的表9个TDS的CSS是不是相对于这个所以离开它,我猜。

jQuery对此也很简单。但我无法将数据推送到阵列。

var vic = $('.vicvacvoe table tr td'); 
    var player = 1; 
    var tick = '✓'; 
    var cross = 'X'; 
    var user1 = []; 
    var user2 = []; 
    vic.click(function() { 
     var className = $(this).attr('class'); 
     if (className != 'dead') { 
      // A new board place to write on... 
      // Now do the processes here... 
      if (player == 1) { 
       // First player! 
       var cArray = className.split(' '); 
       for (i = 0; i < cArray.length; i++) { 
        for (j = 0; j < user1.length; j++) { 
         // check for each class 
         if (user1[j] != cArray[i]) { 
          user1.push(cArray[i]); 
         } 
        } 
       } 
      } else { 
       /* code for second player, the same */ 
      } 
      $(this).text('Works!'); 
      $(this).attr('class', 'dead'); 
     } 
    }); 

这是整个jQuery脚本。实际上,当我运行代码时,它确实到达堆栈的末尾(到类属性更改脚本),并锁定td以进一步处理,并写入Works!也在td中。但是我无法在该用户的Array内获得classNames。我想保存每个用户的线路号码,然后检查他是否有3个点填充。我需要数组部分的帮助。

谢谢!

回答

0

你的问题就在这里:

for (j = 0; j < user1.length; j++) { 

添加到user1阵列的唯一地方是在这个循环中。现在数组最初是空的,所以很明显,这个循环永远不会迭代,因为user1.length总是0.

我认为你的意图与这一点的代码是检查值是否已经在数组中,在这种情况下,我建议使用$.inArray

+0

哦,我从来没有与该登场了!嗯,或者不是这样,只是使用'if(user1.lenght!= 0){'?你认为什么会更好? :) –

+0

如果你是我猜测,试图检查数组中的存在,我会使用'inarray'。 –

1

我更喜欢简单,所以你可以使用indexOf检查类是否已经是用户的阵列中,像这样:

if (player == 1) { 
    // First player! 
    var cArray = className.split(' '); 
    for (i = 0; i < cArray.length; i++) { 
      if(user1.indexOf(cArray[i]) == -1) { 
       user1.push(cArray[i]); 
      } else { 
       // css class is already in the array    
      } 
    } 
}