IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Incrémenter une variable erreur


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Intérimaire
    Inscrit en
    Mai 2017
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Intérimaire

    Informations forums :
    Inscription : Mai 2017
    Messages : 99
    Par défaut Incrémenter une variable erreur
    Bonjour à tous,

    j'ai un souci pour incrémenter ma variable "erreur" qui permettra d'afficher les images du pendu en fonction du nombre d'erreurs, j'ai essayé pas mal de choses mais aucune ne fonctionnent^^

    voici mon code :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <!DOCTYPE html>
     
    <html>
    <head>
    	<meta charset="utf-8">
    	<meta name="viewport" content="width=device-width">
    	<title>pendu</title>
    	<link href="pendu.css" rel="stylesheet" type="text/css" />
    	<script src="jquery-3.3.1.min.js"></script>
    	<script src="jquery-ui.js"></script>
    	<script src="pendu.js"></script>
    </head>
     
    <body>
    	<input type="text"/>
    <button id="test1">test1</button>
    <button id="test2">test2</button>
    </body>
    </html>


    JQUERY

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    $(document).ready(function(){
    var $rep_val = $('input'),
    	$fst_btn = $('#test1'),
    	$sec_btn = $('#test2'),
    	char_found = [],
    	prop = "lieutenant",
    	word_rep = [],
    	resu = [],
     
    	rep='';
     
    	//création tableau résultat
    	word = Array.from(prop);
    	resu = word.slice();
     
    		for (var i=0;i<resu.length;i++){
    			resu[i] = "_";
    		}
     
    	// changement au click sur Ok
    	$fst_btn.click(function(){
     
    		console.log("word = "+word+" "+"resu = "+resu);
    		rep = $rep_val.val();
    		var r = new RegExp((rep),'g');
    		for(var j=0;j<prop.length;j++){
    			var err = 0;
    			if (word[j].match(r) !== null){
    				word_rep.push(rep); //récupère les lettres trouvées
    				char_found = Array.from(new Set(word_rep)); //élimine les doublons
    				for (var u in char_found){ // récupère l'index des lettres
    					for(var y = 0; y < word.length; y++){ 
    						if (char_found[u] == word [y]){ //récup l'égalité afin de replacer les lettres à la bonne place
    						resu[y] = char_found[u]; //modification du fichier résultats avec mise en place des lettres au bon endroit
    						}
    					}
    				}
    			}
    			else{
    			err++;
    			}
    		}
    	console.log("lettre trouvée :"+char_found+" resu : "+resu+" erreur : "+err);
    	});
    });
    Si vous avez des idées et solutions je suis preneur

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    Salut,

    déclare la variable err avant la boucle for.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var err;
    for(var j=0;j<prop.length;j++){
    ...}
    ou tu la déclare tout au début du script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $(document).ready(function(){
      var $rep_val = $('input'),
      err,....
      $fst_btn.click(function(){
           ...
           err=0;
           for(var j=0;j<prop.length;j++){...}
     });
    });

  3. #3
    Membre très actif
    Homme Profil pro
    Intérimaire
    Inscrit en
    Mai 2017
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Intérimaire

    Informations forums :
    Inscription : Mai 2017
    Messages : 99
    Par défaut
    j'ai déplacé l'initialisation de la variable erreur mais cela me donne un résultat bizarre dans ma console :/ :

    quand l'initialisation se fait en tout début :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $(document).ready(function(){
    var $rep_val = $('input'),
    	$fst_btn = $('#test1'),
    	$sec_btn = $('#test2'),
    	char_found = [],
    	prop = "lieutenant",
    	word_rep = [],
    	resu = [],
    	err = 0,
    	rep='';
    j'ai ce résultat dans le console.log :
    word = l,i,e,u,t,e,n,a,n,t resu = _,_,_,_,_,_,_,_,_,_
    lettre cherchée : a lettre trouvée :a resu : _,_,_,_,_,_,_,a,_,_ erreur : 9
    word = l,i,e,u,t,e,n,a,n,t resu = _,_,_,_,_,_,_,a,_,_
    lettre cherchée : z lettre trouvée :a resu : _,_,_,_,_,_,_,a,_,_ erreur : 19
    word = l,i,e,u,t,e,n,a,n,t resu = _,_,_,_,_,_,_,a,_,_
    lettre cherchée : r lettre trouvée :a resu : _,_,_,_,_,_,_,a,_,_ erreur : 29
    la variable s'incrémente de 10 en 10 XD

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    $(document).ready(function(){
    	var ...,
    	....,
    	err;
     
            $fst_btn.click(function(){
                err=0;//initialise err à 0 a chaque clique sur le bouton
                ...
                for(var j=0;j<prop.length;j++){
                     if(word[j].match(r) !== null){...}
                     else{err++;}
                }
            });
    });
    sinon sans else, tu peux compter le nombre de caractère "_" trouvé dans resu[] en utilisant $.map()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    $(document).ready(function(){
    	var ...,
    	....,
    	err;
     
            $fst_btn.click(function(){
                err=0;//initialise err à 0 a chaque clique sur le bouton
                ...
                for(var j=0;j<prop.length;j++){
                     if(word[j].match(r) !== null){...}
                }
                //en dehors de la boucle
                $.map(resu,function(v,k){if(v=='_')err++;});
            });
    });

    d'après ce que je comprends depuis ton code actuel, la variable err contiendra le nombre de fois que l'utilisateur se trompe de lettre, et si par exemple err==(un chiffre max), tu affiches un message d'erreur à l'utilisateur: "Vous avez perdu(e)" , est-ce bien ça?

    Dans le mot "lieutenant" si on écrit "i" et ensuite on appuie sur le bouton, err ne devrait pas s'incrémenter, par-contre si on écrit "p", là elle s'incrémente.

    Pour ça, il faut mettre la boucle dans la condition if et pas le contraire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    $(document).ready(function(){
    	var $rep_val = $('input'),
    		$fst_btn = $('#test1'),
    		$sec_btn = $('#test2'),
    		char_found = [],
    		prop = "lieutenant",
    		word_rep = [],
    		resu = [],
    		err=0,
    		rep='';
     
    	//création tableau résultat
    	word = Array.from(prop);
    	resu = word.slice();
     
    	for (var i=0;i<resu.length;i++){
    		resu[i] = "_";
    	}
     
    	// changement au click sur Ok
    	$fst_btn.click(function(){
    		console.log("word = "+word+", resu = "+resu);
    		rep = $rep_val.val();
    		//var r = new RegExp(rep,'g');
    		if (prop.match(rep) !== null){
    			for(var j=0;j<prop.length;j++){
    				word_rep.push(rep); //récupère les lettres trouvées
    				char_found = Array.from(new Set(word_rep)); //élimine les doublons
    				for (var u in char_found){ // récupère l'index des lettres
    					for(var y = 0; y < word.length; y++){ 
    						if (char_found[u] == word [y]){ //récup l'égalité afin de replacer les lettres à la bonne place
    							resu[y] = char_found[u]; //modification du fichier résultats avec mise en place des lettres au bon endroit
    						}
    					}
    				}
    			}
    		}
    		else{
    			err++;
    		}
    		console.log("lettre trouvée :"+char_found+" resu : "+resu+" erreur : "+err);
    	});
    });

  5. #5
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Compter les erreurs ne sert à rien. Tout ce que tu as besoin de savoir c'est si la lettre été trouvée et dans le cas contraire de passer à l'image suivante.

    Ici, il n'y a aucune raison d'utiliser une expression régulière, indexOf() fera très bien l'affaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var r = new RegExp((rep),'g');
    for(var j=0;j<prop.length;j++){
        var err = 0;
        if (word[j].match(r) !== null){
    Mais l'idéal serait que tu construises une structure de données facilement interrogeable à partir du mot de départ, qui puisse te fournir une liste d'index en fonction d'une lettre. Par exemple pour "lieutenant":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    {
        'l': [0],
        'i': [1],
        'e': [2,5],
        'u': [3],
        't': [4,9],
        'n': [6,8],
        'a': [7]
    }
    Avec ça plus besoin de boucle pour savoir si une lettre est présente et en prime tu as directement les index des underscores à remplacer.

  6. #6
    Membre très actif
    Homme Profil pro
    Intérimaire
    Inscrit en
    Mai 2017
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Intérimaire

    Informations forums :
    Inscription : Mai 2017
    Messages : 99
    Par défaut
    Merci Toufik ca marche

    Et je remercie tout le monde aussi pour vos réponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/12/2008, 22h33
  2. incrémenter une variable à chaque clique sur un lien
    Par Piccolo_son dans le forum Langage
    Réponses: 7
    Dernier message: 17/12/2007, 21h56
  3. Incrémenter une variable en CR9
    Par nanouille56 dans le forum SAP Crystal Reports
    Réponses: 9
    Dernier message: 13/02/2007, 15h59
  4. [XSLT] incrémenter une variable
    Par nemya dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 26/09/2005, 17h12
  5. [débutant][xsl]incrémenter une variable
    Par guitalca dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 01/04/2003, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo