2017-01-26 51 views
-1

我想爲我需要爲學校編碼的井字棋遊戲製作記分牌,但我正在努力選擇表格的特定部分,然後記分板的其餘部分。Javascript選擇特定表格部分

<h1>Scores</h1> 
<table class="rounds-info"> 
    <tr> 
     <td><img width="15" height="15" alt="" title="" src="img/cross.jpg" />&nbsp;Player 1</td> 
     <td>0</td> 
    </tr> 
    <tr> 
     <td><img width="15" height="15" alt="" title="" src="img/circle.jpg" />&nbsp;Player 2</td> 
     <td>0</td> 
    </tr> 
    <tr> 
     <td>Total rounds</td> 
     <td>0</td> 
    </tr> 

我需要選擇可以使用document.winner找到的贏家的td。 document.winner根據贏得的人打印出1或2。

以及當玩家贏得它時應該增加一個總回合。

我希望有人能幫助我。

這是整個代碼:

<head> 
    <title>Boter, Kaas en Eieren</title> 

    <link rel="stylesheet" href="css/style.css" /> 
</head> 

<body onload="startGame();"> 
<div id="mainContainer"> 

     <h1>Boter, Kaas &amp; Eieren</h1> 

     <div id="speelveld"> 
      <table border="0"> 
       <tr> 
        <td><img alt="" title="" src="img/empty.jpg" /></td> 
        <td><img alt="" title="" src="img/empty.jpg" /></td> 
        <td><img alt="" title="" src="img/empty.jpg" /></td> 
       </tr> 
       <tr> 
        <td><img alt="" title="" src="img/empty.jpg" /></td> 
        <td><img alt="" title="" src="img/empty.jpg" /></td> 
        <td><img alt="" title="" src="img/empty.jpg" /></td> 
       </tr> 
       <tr> 
        <td><img alt="" title="" src="img/empty.jpg" /></td> 
        <td><img alt="" title="" src="img/empty.jpg" /></td> 
        <td><img alt="" title="" src="img/empty.jpg" /></td> 
       </tr> 
      </table> 
     </div> <!-- EINDE SPEELVELD CONTAINER --> 

     <div id="game-info"> 
      <h1>Aan beurt</h1> 
      <div id="message">Messages here.</div> 
      <table class="players-turn" border="0"> 
       <tr> 
        <td><img width="25" height="25" alt="" title="" src="img/cross.jpg" /></td> 
        <td>Speler</td> 
        <td>1</td> 
       </tr> 
      </table> <!-- EINDE SPELER AAN ZET TABEL --> 

      <h1>Scores</h1> 
      <table class="rounds-info"> 
       <tr> 
        <td><img width="15" height="15" alt="" title="" src="img/cross.jpg" />&nbsp;Speler 1</td> 
        <td>0</td> 
       </tr> 
       <tr> 
        <td><img width="15" height="15" alt="" title="" src="img/circle.jpg" />&nbsp;Speler 2</td> 
        <td>0</td> 
       </tr> 
       <tr> 
        <td>Aantal rondes</td> 
        <td>0</td> 
       </tr> 
      </table> <!-- EINDE INFO TABEL --> 

      <button class="game-button">Start spel</button> 

     </div> <!-- EINDE GAME-INFO CONTAINER --> 

    </div> <!-- EINDE MAINCONTAINER --> 

    <script type="text/javascript" src="js/bke.js"></script> 
</body> 

的JavaScript代碼是:

var game = document.getElementById('speelveld'); 
//var squares = game.getElementsByTagName('td'); 

var squares = document.getElementById('speelveld').getElementsByTagName('img'); 
var player_images = [ 'img/empty.jpg', 'img/cross.jpg', 'img/circle.jpg' ]; 

var startGameButton = document.getElementsByClassName('game-button')[0]; 
var turn_player_number = document.getElementsByClassName('players-turn'); 

var turn_player_number = document.getElementsByClassName('players-turn')[0].getElementsByTagName('td')[2]; 
var turn_player_image = document.getElementsByClassName('players-turn')[0].getElementsByTagName('img')[0]; 

//var roundsInfo = document.getElementsByClassName('rounds-info')[0].getElementsByTagName('td'); 

startGameButton.addEventListener('click', refreshGame); 

for (var i = 0; i < squares.length; i ++) { 
    squares[i].addEventListener('click', nextMove); 
} 

function startGame() { 
    document.turn = 1; 
    document.winner = null; 
    setMessage(document.turn + "e speler begint met spelen."); 
    setTurnInfo(document.turn); 
} 

function setTurnInfo(player){ 
    turn_player_number.innerHTML = player; 
    turn_player_image.src = player_images[player]; 
    //document.getElementById("message").innerText = msg; 
    setMessage("Speler " + document.turn + " is aan de beurt"); 
} 


function setMessage(msg){ 
    document.getElementById("message").innerText = msg; 
} 

function nextMove() { 
//console.log(document.winner, this.src.search('empty')); 
    if (document.winner != null){ 
     setMessage("Speler " + document.turn + " heeft al gewonnen.") 
    } else if(this.src.search('empty') >= 0) { 
     this.src = player_images[document.turn]; 
     //this.src = 'img/' + document.turn + '.jpg'; 
     switchTurn(); 
    } else { 
     setMessage("Kies een ander speelvak."); 
     // setMessage(document.turn); 
    } 
} 

function switchTurn() { 
    if (checkForWinner(document.turn)) { 
     setMessage("Gefeliciteerd speler " + document.turn + " heeft gewonnen!"); 
     document.winner = document.turn; 
    } else if (document.turn == 1) { 
     document.turn = 2; 
     setTurnInfo(document.turn) 
    } else { 
     document.turn = 1; 
     setTurnInfo(document.turn) 
    } 
} 


function checkForWinner(player) { 
    var result = false; 
    if(checkRow(1,2,3, player) || 
    checkRow(4,5,6, player) || 
    checkRow(7,8,9, player) || 
    checkRow(1,4,7, player) || 
    checkRow(2,5,8, player) || 
    checkRow(3,6,9, player) || 
    checkRow(1,5,9, player) || 
    checkRow(3,5,7, player)) { 
     result = true; 
    } 
    return result; 
} 

function checkRow (a, b, c, player) { 
    var result = false; 
    if (getBox(a).search(player_images[player]) >= 0 && 
     getBox(b).search(player_images[player]) >= 0 && 
     getBox(c).search(player_images[player]) >= 0){ 
     result = true; 
    } 
    return result; 
} 

function getBox(number) { 
    return squares[number - 1].src; 
//return document.getElementById("s" + number).innerText 
} 

function refreshGame(number) { 
    for (var i = 0; i < squares.length; i++) { 
     squares[i].src = player_images[0]; 
    } 
    document.winner = null; 
} 
+1

看來你問做練習吧......請告訴我們你的代碼,我們可以從開始討論和幫助。請閱讀[如何創建一個最小,完整和可驗證的示例](http://stackoverflow.com/questions/41699215/add-remove-class-of-multiple-li-in-angularjs)。 – Andrea

回答

0

我建議你使用jQuery使您能夠選擇HTML與CSS像查詢的DOM。

您應該添加CSS類來幫助您選擇所需的HTML。

例:

<h1>Scores</h1> 
     <table class="rounds-info scores"> 
      <tr class="player1"> 
       <td><img width="15" height="15" alt="" title="" src="img/cross.jpg" />&nbsp;Player 1</td> 
       <td class="count">0</td> 
      </tr> 
      <tr class="player2"> 
       <td><img width="15" height="15" alt="" title="" src="img/circle.jpg" />&nbsp;Player 2</td> 
       <td class="count">0</td> 
      </tr> 
      <tr> 
       <td>Total rounds</td> 
       <td>0</td> 
      </tr> 

爲了與玩家1的計數選擇TD,使用jQuery怎麼辦?(沒有經過測試的代碼)

var count = parseInt($(".scores .player1 .count").val()); 
//increase counter 
$(".scores .player1 .count").val(count + 1); 

編輯:

無jQuery可以使用dcocument.getElementById方法。 而不是使用class youuse id屬性。

警告:您的ID必須是唯一

<h1>Scores</h1> 
     <table class="rounds-info"> 
      <tr> 
       <td><img width="15" height="15" alt="" title="" src="img/cross.jpg" />&nbsp;Player 1</td> 
       <td id="countPlayer1">0</td> 
      </tr> 
      <tr> 
       <td><img width="15" height="15" alt="" title="" src="img/circle.jpg" />&nbsp;Player 2</td> 
       <td id="countPlayer2">0</td> 
      </tr> 
      <tr> 
       <td>Total rounds</td> 
       <td>0</td> 
      </tr> 

要選擇TD

var td = document.getElementById('countPlayer1'); 
var score = parseInt(td.innerHTML); 
td.innerHTML = score + 1; 

小提琴:https://jsfiddle.net/wq1e0n6z/

+0

我不允許使用jQuery。 –

+0

我編輯了我的答案 – PortePoisse

0

在純JS:第一個解決方案,它來到我的腦海將玩家標識符(1代表「玩家1」等)放入表中的玩家行中,例如:

<table class="rounds-info"> 
      <tr title='1'> 
       <td title='name'>John Smith</td> 
       <td title='score'>1</td> 
      </tr>... 

現在您可以訪問該行:

var winnerRow = document.querySelectorAll('[title=1]'); 

並增加第二td元素的值:

var winnerScore = winnerRow.querySelectorAll('[title=score]'); 
winnerScore.value = winnerScore.value + 1; 

最後,一般性的建議:學習jQuery,它會讓你的生活更容易。乾杯