Sauvegarde meilleur score

Résolu
Nirsab Messages postés 78 Statut Membre -  
Nirsab Messages postés 78 Statut Membre -
Bonjour,

Quel code je dois ajouter pour sauvegarder le meilleur score même si il y a une remise à 0, stp ?

$('.compteur').on('click', function (e) {
        e.preventDefault();
           $val = $(this).attr('value').split('|');
           $champ = '#compteur' + $val[0];
           $new_score = parseInt($($champ).text()) + parseInt($val[1]);
         if ($new_score < 0) {
             $('#compteur' + $val[0]).text('0');
       } else if ($new_score <= 3) {
             $('#compteur' + $val[0]).text($new_score);
       } else  {
             $('#compteur' + $val[0]).text('ÉQUIPE QUALIFIÉE'); 
       }   
	     
		}) 
		  
	    $('.mise0').on('click', function (e) {
            e.preventDefault();
            $val = $(this).attr('value').split('|');
            $champ = '#compteur' + $val[0];
            console.log("CHAMP",$champ);
            $($champ).text('0');
          })
	   
	   })


SVP, merci

Nirsab

3 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,

    Alors,
    Tu veux sauvegarder où ?
    - Dans une BDD ?
    - En "local" dans le navigateur ( via le localstorage ou les cookies ) ?

    A quel moment faut-il sauvegarder ? ( je pense à chaque modif des scores ... sauf si remise à zéro donc ) ?

    A noter qu'on ne donne pas du code tout cuit ........ par contre on peut t'aider à corriger celui que tu proposerais.

    0
  2. Nirsab Messages postés 78 Statut Membre
     
    Si je comprends bien, ce serait en local.

    J'imagine le truc façon Questions Pour un Champion...
    Par exemple, quand le joueur est à 3 pts, mettons qu'il réponde faux et ne parvienne pas à atteindre 4, son score enregistré est de 3 pts...

    Je sais bien que vous ne donnez pas du tout cuit, sauf que je débute en JS, je commence à comprendre les bases...

    Donc pour l'instant, je tâtonne...
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       

      J'imagine le truc façon Questions Pour un Champion...
      Par exemple, quand le joueur est à 3 pts, mettons qu'il réponde faux et ne parvienne pas à atteindre 4, son score enregistré est de 3 pts...

      Alors non, dans question pour un champion, si il répond mal .. son score retombe à zéro.


      Si je comprends bien, ce serait en local.

      Tu peux donc utiliser le LOCALSTORAGE du navigateur.
      Tu trouveras, sans mal, de nombreux tutos à ce sujet sur le net.
      0
    2. Nirsab Messages postés 78 Statut Membre > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
       
      C'est ce que je dis, son score retombe à 0 mais les points qu'il a marqué sont conservés...

      Merci je vais regarder...
      0
    3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Nirsab Messages postés 78 Statut Membre
       

      C'est ce que je dis, son score retombe à 0 mais les points qu'il a marqué sont conservés...

      Alors on ne doit pas regarder la même émission ....
      Non.. son score retombe à zéro .. et .... c'est tout ... si il est monté à trois et qu'il se foire ...il retombe à zéro .. et si le temps est écoulé .. c'est le score au moment du "gong" qui est gardé ...
      0
    4. Nirsab Messages postés 78 Statut Membre > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Oui, voilà... c'est ce que je cherche à faire...
      0
    5. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Nirsab Messages postés 78 Statut Membre
       
      donc tu n'as pas besoin de conserver le score même si remise à zéro ......
      0
  3. Nirsab Messages postés 78 Statut Membre
     
    Y'a pas de mal :)

    <div class="form-group">
                                <label for="2emequalifiee">3ÈME ÉQUIPE QUALIFIÉE:</label>  
                            </div>
    
                            <div class="form-group">
                                <label for="compteur3">SCORE:</label>
                                <div class="col-sm-2">
                                    <span id="compteur3"><b>0</b></span>
    
                                    <span id="scoreMax"><b>0</b></span>
    
                                </div>
                            </div>
    
                            <div>
                                <button class="compteur" value="3|1" style="background-color:green">+1</button>
    							<button class="mise0" value="3|0" style="background-color:red">0</button>
                                
                            </div>


    $('.compteur').on('click', function (e) {
            e.preventDefault();
               $val = $(this).attr('value').split('|');
               $champ = '#compteur' + $val[0];
               $new_score = parseInt($($champ).text()) + parseInt($val[1]);
             if ($new_score < 0) {
                 $('#compteur' + $val[0]).text('0');
           } else if ($new_score <= 3) {
                 $('#compteur' + $val[0]).text($new_score);
           } else  {
                 $('#compteur' + $val[0]).text('ÉQUIPE QUALIFIÉE'); 
           }   
    	     
    		}) 
    		  
    	    $('.mise0').on('click', function (e) {
                e.preventDefault();
                $val = $(this).attr('value').split('|');
                $champ = '#compteur' + $val[0];
                console.log("CHAMP",$champ);
                $($champ).text('0');    
    
    
    
              })
    
    
             function scoreMax(){
             localStorage.setItem('scoreMax', '#compteur');
      
    }


    Est-ce que je commence bien ? Que faut-il ajouter, corriger etc?
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      localStorage.setItem('scoreMax', '#compteur');
      

      Là, il va mettre en mémoire la "string" #compteur
      pour récupérer la valeur, il faut cibler l'élément voulu et en récupérer la valeur
      Par exemple
      let score = parseInt($("#compteur2").text()); // valeur du compteur02
      localStorage.setItem('scoreMax2', score);
      
      0
    2. Nirsab Messages postés 78 Statut Membre > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Dans la console, cela m'affiche ceci:
      QPUC2.html:185 Uncaught SyntaxError: Identifier 'score' has already been declared

      Il faut modifier le 'score' en quoi ?

       localStorage.setItem('scoreMax', '#compteur');
      
              let score = parseInt($("#compteur1").text()); // valeur du compteur1
              localStorage.setItem('scoreMax1', score);
      
      
      
              let score = parseInt($("#compteur2").text()); // valeur du compteur2
              localStorage.setItem('scoreMax2', score);
      
              let score = parseInt($("#compteur3").text()); // valeur du compteur3
              localStorage.setItem('scoreMax3', score);
      0
    3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Nirsab Messages postés 78 Statut Membre
       
      Tu as du déjà utiliser la variable score ailleurs dans ton code et tu l'as défini en utilisant le mot clé CONST ...

      Donc, ben.. renomme tes variables score1, score2 ... et ça devrait mieux fonctionner.

      Mieux encore... faire une fonction pour le gérer..
      par exemple
      function saveScore(numCompteur){
         let scorexx = parseInt($("#compteur"+numCompteur).text()); // valeur du compteur X
         localStorage.setItem('scoreMax' + numCompteur , scorexx );
      }
      
      function scoreMax(){
        // boucle sur les 4 compteurs de la page
        for (var i=1;i<=4;i++){
          saveScore(i);
         }
      }
      
      
      0
    4. Nirsab Messages postés 78 Statut Membre > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Cela ne fonctionne pas...

      Il faut changer le numCompteur et scorexx ?
      Sur la page j'ai 3 compteurs...
      0
    5. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Nirsab Messages postés 78 Statut Membre
       
      Pour 3 compteurs.. suffit d'adapter le i dans la boucle
      Et .. pour ne garder que le score le plus haut
            function saveScore(numCompteur){
               let scorexx = parseInt($("#compteur"+numCompteur).text()); // valeur du compteur X
               let ancienScore = localStorage.getItem('scoreMax'+numCompteur);
               console.log('Précédent Score ',ancienScore);
               // si le précédent scrore est plus petit que le nouveau.. on sauvegarde
               if(ancienScore < scorexx ){
                console.log('Score sauvegardé',scorexx);
                localStorage.setItem('scoreMax' + numCompteur , scorexx );
               }
            }
      
            function scoreMax(){
              // boucle sur les 3 compteurs de la page
              for (var i=1;i<=3;i++){
                console.log('compteur :',i);
                saveScore(i);
               }
            }
      


      Bien entendu, il faut déclencher l'appel à la fonction scoreMax pour que ça marche
      à la fin de ta fonction
       $('.compteur').on('click', function (e) {  
      par exemple
      0