'Where to put my removeEventListener in my source code

This is a connect4 game I'd learned from https://youtu.be/ec8vSKJuZTk?list=PLv4ZiliNOD5pTxDTlQ_yFM-ySHgbLl3um

I've tried putting my removeEventListener inside the loop and outside the loop, but neither way worked.

This is my HTML code.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="styles.css">
    <title>Connect Four</title>
    <script src="app.js" charset="utf-8"></script>
    <!-- script can also put in the header , check out the js file to see how it works -->
</head>
<body>
    <h3>The current player is player: <span id="current-player"></span></h3>
    <h3 id="result"></h3>
    <!-- 7 x 6 grid, plus with secret seven = total 49 -->
    <div class="grid"> 
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div class="taken"></div>
        <div class="taken"></div>
        <div class="taken"></div>
        <div class="taken"></div>
        <div class="taken"></div>
        <div class="taken"></div>
        <div class="taken"></div>
    </div>
</body>
</html>

And this is my javascript code.

document.addEventListener('DOMContentLoaded', () => {
    const squares = document.querySelectorAll('.grid div') //every div inside class grid
    const result = document.getElementById('result')
    const displayCurrentPlayer = document.querySelector('#current-player')
    let currentPlayer = 1
    
    //all possible winning arrays combination
    const winningArrays = [    
    [0, 1, 2, 3],
    [41, 40, 39, 38],
    [7, 8, 9, 10],
    [34, 33, 32, 31],
    [14, 15, 16, 17],
    [27, 26, 25, 24],
    [21, 22, 23, 24],
    [20, 19, 18, 17],
    [28, 29, 30, 31],
    [13, 12, 11, 10],
    [35, 36, 37, 38],
    [6, 5, 4, 3],
    [0, 7, 14, 21],
    [41, 34, 27, 20],
    [1, 8, 15, 22],
    [40, 33, 26, 19],
    [2, 9, 16, 23],
    [39, 32, 25, 18],
    [3, 10, 17, 24],
    [38, 31, 24, 17],
    [4, 11, 18, 25],
    [37, 30, 23, 16],
    [5, 12, 19, 26],
    [36, 29, 22, 15],
    [6, 13, 20, 27],
    [35, 28, 21, 14],
    [0, 8, 16, 24],
    [41, 33, 25, 17],
    [7, 15, 23, 31],
    [34, 26, 18, 10],
    [14, 22, 30, 38],
    [27, 19, 11, 3],
    [35, 29, 23, 17],
    [6, 12, 18, 24],
    [28, 22, 16, 10],
    [13, 19, 25, 31],
    [21, 15, 9, 3],
    [20, 26, 32, 38],
    [36, 30, 24, 18],
    [5, 11, 17, 23],
    [37, 31, 25, 19],
    [4, 10, 16, 22],
    [2, 10, 18, 26],
    [39, 31, 23, 15],
    [1, 9, 17, 25],
    [40, 32, 24, 16],
    [9, 17, 25, 33],
    [8, 16, 24, 32],
    [11, 17, 23, 29],
    [12, 18, 24, 30],
    [1, 2, 3, 4],
    [5, 4, 3, 2],
    [8, 9, 10, 11],
    [12, 11, 10, 9],
    [15, 16, 17, 18],
    [19, 18, 17, 16],
    [22, 23, 24, 25],
    [26, 25, 24, 23],
    [29, 30, 31, 32],
    [33, 32, 31, 30],
    [36, 37, 38, 39],
    [40, 39, 38, 37],
    [7, 14, 21, 28],
    [8, 15, 22, 29],
    [9, 16, 23, 30],
    [10, 17, 24, 31],
    [11, 18, 25, 32],
    [12, 19, 26, 33],
    [13, 20, 27, 34],];
    // the squares will be stored in an array
    
    function checkBoard(){
        for (let y = 0; y < winningArrays.length ;y++){
            const square1 = squares[winningArrays[y][0]]
            const square2 = squares[winningArrays[y][1]]
            const square3 = squares[winningArrays[y][2]]
            const square4 = squares[winningArrays[y][3]] 
            //check those squares to see if they all have class of player one or the player two

            if(
                square1.classList.contains('player-one') &&
                square2.classList.contains('player-one') &&
                square3.classList.contains('player-one') &&
                square4.classList.contains('player-one') 
            ) {
                result.innerHTML = 'Player One Wins';
            
            }

            if(
                square1.classList.contains('player-two') &&
                square2.classList.contains('player-two') &&
                square3.classList.contains('player-two') &&
                square4.classList.contains('player-two') 
            ) {
                result.innerHTML = 'Player Two Wins';
            
            }


        }
       


    }

    for (let i = 0; i < squares.length; i++){

        var checkAndSwitchPlayer = () =>{
            if (squares[i + 7].classList.contains('taken') && !squares[i].classList.contains('taken')){
                if (currentPlayer === 1){
                    squares[i].classList.add('player-one')
                    squares[i].classList.add('taken')
                    //its like swith to other player's turn
                    currentPlayer = 2
                    displayCurrentPlayer.innerHTML = currentPlayer
                } else if (currentPlayer === 2){
                    squares[i].classList.add('player-two')
                    squares[i].classList.add('taken')
                    currentPlayer = 1
                    displayCurrentPlayer.innerHTML = currentPlayer
                } 
            } else alert('You cant go there bro');
            checkBoard();}

        
        squares[i].addEventListener('click',checkAndSwitchPlayer)
        
        ;
        
    }   

})


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source