Home > other >  script.js:65 Uncaught RangeError: Maximum call stack size exceeded
script.js:65 Uncaught RangeError: Maximum call stack size exceeded

Time:11-26

Good evening, I keep getting the following error in the console: script.js:65 Uncaught RangeError: Maximum call stack size exceeded

const idx = Math.floor(Math.random() * caches.length);

if(caches[idx].zombieId === lastCachette){
     console.log;

    return randomUp();
}

thank you for your help

CodePudding user response:

full script

// Constantes

const container = document.querySelector('.plateau');

const scoreBoard = document.querySelector('.score');

const btnStart = document.querySelector('.btnStart');


// Variables

let derniereCachette = false;

let gameOver = false;

let score = 0;

btnStart.addEventListener('click',startGame);

function startGame(){
    btnStart.getElementsByClassName.display = 'none';
    creationPlateau();
    startZombies();
    score = 0;
    scoreBoard.innerHTML = score;
    scoring();


}

//Fonction pour faire apparaitre les zombies aléatoirement

function startZombies(){

    let cachette = randomUp();

    let temp = Math.floor(Math.random() *3)   1;

    let tempClass = temp > 1 ? 'up' : 'up2';

    cachette.classList.add(tempClass);

    //calcul du tps d'apparition:
    const time = Math.round(Math.random()* (1500 - 250)  250);

    setTimeout(function(){

        cachette.classList.remove(tempClass);

        if(!gameOver) startZombies();
        
    },time);

}


function randomUp(){

    //On crée une variable pour aller chercher ttes les div qui ont la class = "cachette"

    const cachettes = document.querySelectorAll('.cachette');

    //constante qui va générer un chiffre aléatoire parmi les 9 occurences

    const idx = Math.floor(Math.random() * cachettes.length);

    if(cachettes[idx].zombieId === derniereCachette){
         console.log;

        //on relance la génération de l'index

        return randomUp();
    }

    //ON STOCKE le résultat dans la variable derniereCachette

    derniereCachette = cachettes[idx].zombieId;

    //ON RETOURNE à la valeur obtenue

    return cachettes[idx];
} 



function creationPlateau(){
    let cachetteCrees = 9;

    container.innerHTML = ' ';

    //Création d'une boucle pour la création des div qui représentent les cachettes (pas plus de 9)


    for(let x = 0; x< cachetteCrees; x  ){

        //console.log('apparitions');

        //Créer les div

        let div = document.createElement('div');

        //On ajoute une classe à chaque div nouvellement crées

        div.setAttribute('class', 'cachette');

        div.zombieID = x;

        //On crée dynamiquement uen div avec une classe et un évenement (tie) pour les zombies, Lola.

        //Zombies

        let zombie = document.createElement('div');
        zombie.setAttribute('class','zombie');
        zombie.onclick = tir;
        div.appendChild(zombie);

        //Lola

        let lola = document.createElement('div');
        lola.setAttribute('class','lola');
        lola.onclick = tir2;
        div.appendChild(lola);

        // Mur

        let mur = document.createElement('div');
        mur.setAttribute('class','mur');
        div.appendChild(mur);

        //On rattache nos div (9) à la  div plateau

        container.appendChild(div);   
     


    }
}

function scoring(){
    scoreBoard.innerHTML ="Score: "   score;

    let message = score >=10 ? "C'est gagné !" : "Vous avez perdu, voulez vous refaire une partie ?";

    if(score >= 10 || score <0){
        gameOver = true;
        btnStart.getElementsByClassName.display = 'block';

        confirm(message);
        document.location.href = "index.html";
    }
}

function tir(e){

    
score  ;
this.parentNode.classList.remove('up');
scoring();

}


function tir2(){

    
score = score-5;
this.parentNode.classList.remove('up2');
scoring();

}

CodePudding user response:

Every recursion should have a base case, that is, at what point will it stop.

From the foregoing it is will continuing running and probably wont stop, as such the browser will completely run out of memory, hence the error message would appear.

Provide a full detail of your code up there, not below

  • Related