简体   繁体   English

点击事件目标图像显示上的javascript

[英]javascript on click event target image display

In the example code below, an X or an O is going to be placed on a mouse click.在下面的示例代码中,X 或 O 将放置在鼠标单击上。 I want to change this to an image.我想将其更改为图像。 positive.png for the X and negative.png for the O How can I modify this? X 为positive.png,O 为negative.png 我该如何修改?

var tabelKolommen = document.querySelectorAll('td') 
var aanDeBeurt = 1;

tabelKolommen.forEach(function(td) {
    td.addEventListener('click', doeIetsMetKolom);
})

function doeIetsMetKolom(event) {
    console.log(event.target);
    
    if(event.target.textContent == "X" || event.target.textContent == "O" ) {
        console.log('al bezet!');
    } else {
        if(aanDeBeurt == 1) {
            event.target.textContent = "X";
            aanDeBeurt = 2;
        } else {
            event.target.textContent = "O";
            aanDeBeurt = 1;
        }
    }

}

You can either toggle a class on the element, or you can assign a data attribute to the cell.您可以切换元素上的类,也可以将数据属性分配给单元格。 I would go with assigning a data attribute, because this separates the JavaScript from the presentation (CSS) layer.我会分配一个数据属性,因为这将 JavaScript 与表示 (CSS) 层分开。

 const players = ['O', 'X']; let turn = 0; const getCurrentPlayer = () => players[turn % players.length]; const onCellClick = ({ target }) => { if (!target.dataset.player) { target.dataset.player = getCurrentPlayer(); turn++; } } document.querySelectorAll('.tic-tac-toe .cell').forEach(cell => cell.addEventListener('click', onCellClick));
 html, body { width: 100%; height: 100%; margin: 0; padding; 0; } body { display: flex; justify-content: center; align-items: center; } .tic-tac-toe { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; } .cell { width: 32px; height: 32px; border: thin solid grey; cursor: pointer; } .cell[data-player="O"] { background-image: url('https://via.placeholder.com/32/DFD/000?text=O'); cursor: not-allowed; } .cell[data-player="X"] { background-image: url('https://via.placeholder.com/32/FDD/000?text=X'); cursor: not-allowed; }
 <div class="tic-tac-toe"> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> </div>

var oImage = document.createElement('img');
oImage.src = '/link-to-O-image.png';
var xImage = document.createElement('img');
xImage.src = '/link-to-X-image.png';

var tabelKolommen = document.querySelectorAll('td') 
var aanDeBeurt = 1;

tabelKolommen.forEach(function(td) {
    td.addEventListener('click', doeIetsMetKolom);
})

function doeIetsMetKolom(event) {
    console.log(event.target);
    
    if(event.target.textContent == "X" || event.target.textContent == "O" ) {
        console.log('al bezet!');
    } else {
        if(aanDeBeurt == 1) {
            event.target.append(xImage);
            aanDeBeurt = 2;
        } else {
            event.target.append(oImage);
            aanDeBeurt = 1;
        }
    }

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM