2017-03-01 8 views
0

私はすべてのセルでクリック機能を持つゲームボードを作ろうとしていますが、セルをクリックするたびに影響を受けるのは最後のセルだけです。 私はこれについていくつかの助けに感謝します。テーブルの はHERESに私のコード:クリックイベントのJavascript表のセル?

var board = document.getElementById("board"); 
var NUM_ROWS = 6; 
var NUM_COLS = 6; 
for (row = 0; row < NUM_ROWS; row++) { 
    var tr = document.createElement("tr"); 
    for (col = 0; col < NUM_COLS; col++) { 
    var td = document.createElement("td"); 
    var img = document.createElement("img"); 
    img.src = 'images/image0.png'; 
    td.appendChild(img); 
    td.addEventListener("click", function() { 
     img.src = 'images/image1.png'; 
    }); 
    tr.appendChild(td); 
    } 
    board.appendChild(tr); 

} 
+0

お使いのブラウザは何である、私の作品、私のそれはあなたがコンソールに表示さん何クロム(F12) – bormat

+0

である私はよまた、クロムを使用します。コンソールに何も表示されません。私はちょうど変化する唯一の細胞が最後のものである理由を理解できないようです。私はちょうどそれを変更するセルを選択する必要があります – swen

+0

あなたは閉鎖にimgを入れなければなりません – bormat

答えて

0

document.body.childNodes[0];を使用して最初のimg子を指定する必要があり。

td.addEventListener("click", function() { 
     var img = this.childNodes[0]; 
     img.src = 'images/image1.png';//use this not img 
    }); 

ソリューション:

var board = document.getElementById("board"); 
 
var NUM_ROWS = 6; 
 
var NUM_COLS = 6; 
 
for (row = 0; row < NUM_ROWS; row++) { 
 
    var tr = document.createElement("tr"); 
 
    for (col = 0; col < NUM_COLS; col++) { 
 
    var td = document.createElement("td"); 
 
    var img = document.createElement("img"); 
 
    img.src = 'images/image0.png'; 
 
    td.appendChild(img); 
 
    td.addEventListener("click", function() { 
 
     var img = this.childNodes[0]; 
 
     console.log('Source Before Clicking'); 
 
     console.log(img.src); 
 
     img.src = 'images/image1.png';//use this not img 
 
     console.log('Source Afer Clicking'); 
 
     console.log(img.src); 
 
    }); 
 
    tr.appendChild(td); 
 
    } 
 
    board.appendChild(tr); 
 

 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="board"> 
 

 
</div>

+0

あなたはtdのsrcを変更しています – bormat

+0

これを試してもクリックは機能しません。 – swen

+0

編集した答えを試してください。あなたは子供の最初のを指す必要があります。 –

関連する問題