简体   繁体   中英

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. I want to change this to an image. positive.png for the X and negative.png for the O How can I modify this?

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.

 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;
        }
    }

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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