Sauvegarde meilleur score

Résolu/Fermé
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022 - 2 août 2021 à 13:32
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022 - 2 août 2021 à 18:21
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
A voir également:

3 réponses

jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
2 août 2021 à 14:11
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
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022
Modifié le 2 août 2021 à 14:32
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
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
2 août 2021 à 14:49

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
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022 > jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024
2 août 2021 à 14:51
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
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649 > Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022
2 août 2021 à 14:55

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
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022 > jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024
2 août 2021 à 14:56
Oui, voilà... c'est ce que je cherche à faire...
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649 > Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022
2 août 2021 à 15:11
donc tu n'as pas besoin de conserver le score même si remise à zéro ......
0
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022
2 août 2021 à 15:57
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
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
2 août 2021 à 16:32
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
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022 > jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024
2 août 2021 à 16:39
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
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649 > Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022
Modifié le 2 août 2021 à 16:44
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
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022 > jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024
2 août 2021 à 16:54
Cela ne fonctionne pas...

Il faut changer le numCompteur et scorexx ?
Sur la page j'ai 3 compteurs...
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649 > Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022
2 août 2021 à 17:06
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