2017-10-13 8 views
0

J'ai ce problème: lorsque je clique sur la div, je veux ajouter une couleur de fond. Pour toujours. Mais l'arrière-plan change même si je clique plus (comme une boucle). Comment définir la couleur de fond pour toujours?Le bouton change de couleur même s'il est déjà affecté

const blocks = document.querySelectorAll('.game div'); 
const liveNumber = document.querySelector('.lives-num'); 
let lives = 1; 


function letTheGameBegin(e, r) { 
    const rand = Math.floor(Math.random() * 100); 
    if (rand < 40) { 
     e.target.style.backgroundColor = 'green'; 
    } else if (rand < 60) { 
     e.target.style.backgroundColor = 'yellow'; 
     lives++; 
    } else if (rand < 90) { 
     e.target.style.backgroundColor = 'red'; 
     lives--; 
    } else { 
     e.target.style.backgroundColor = 'white'; 
    } 
    liveNumber.innerHTML = lives; 
    if (lives === 0) { 
     //document.querySelector('.game-over').style.display = 'flex'; 
    } 
} 

blocks.forEach(block => block.addEventListener('click', letTheGameBegin)); 

Répondre

1

Je pense que vous voulez dire que vous voulez seulement lancer le JS une fois par div.

Essayez cet exemple et voir si son que vous avez besoin: jsfiddle

function letTheGameBegin(e, r) { 
    const rand = Math.floor(Math.random() * 100); 
    if(!e.target.style.backgroundColor){ 
     if (rand < 40) { 
      e.target.style.backgroundColor = 'green'; 
     } else if (rand < 60) { 
      e.target.style.backgroundColor = 'yellow'; 
      lives++; 
     } else if (rand < 90) { 
      e.target.style.backgroundColor = 'red'; 
      lives--; 
     } else { 
      e.target.style.backgroundColor = 'white'; 
     } 
     liveNumber.innerHTML = lives; 
     if (lives === 0) { 
      //document.querySelector('.game-over').style.display = 'flex'; 
     } 
    } 
} 
+0

Il a fonctionné! Merci beaucoup! –