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

JavaScript Discussion :

soucis de bouclage avec for


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Par défaut soucis de bouclage avec for
    Bonjour a tous.

    bon je poste depuis ce compte car j'ai perdu mon ancien compte ^^
    Pouvez vous me dire si cela est possible en fonction javascript?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function enfant(obj)
    	{
    		for(i=1;i<=test;i++)
    		{
    			document.formulaire.age[i].style.display="block";
    		}
     
    		for(i>test;i<=10;i++)
    		{
    			document.formulaire.age[i].style.display="none";
    		}

    voila le code que j'ai dans la page php.

    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
     
    	<Tr>
        	<TH>Nombre d'enfants :</TH>
            <TD>
            <SELECT name="nbrenfants" type="NUMERIC" onChange ="javascript:enfant(this);">
    			<OPTION VALUE="0" SELECTED>0</OPTION>
    			<OPTION VALUE="1">1</OPTION>
    			<OPTION VALUE="2">2</OPTION>
    			<OPTION VALUE="3">3</OPTION>
    			<OPTION VALUE="4">4</OPTION>
    			<OPTION VALUE="5">5</OPTION>
    			<OPTION VALUE="6">6</OPTION>
    			<OPTION VALUE="7">7</OPTION>
    		</SELECT>
            </TD>
        </Tr>  
     
        <Tr>
        	<TH>Age du Premier Enfant :</TH>
            <TD><input name="age1" type="text"><br></TD>
        </Tr>
        <Tr>
        	<TH>Age du deuxième Enfant :</TH>
            <TD><input name="age2" type="text"><br></TD>
        </Tr>
        <Tr>
        	<TH>Age du Troisième Enfant :</TH>
            <TD><input name="age3" type="text"><br></TD>
        </Tr>
        <Tr>
        	<TH>Age du Quatrième Enfant :</TH>
            <TD><input name="age4" type="text"><br></TD>
        </Tr>
        <Tr>
        	<TH>Age du Cinquième Enfant :</TH>
            <TD><input name="age5" type="text"><br></TD>
        </Tr>
        <Tr>
        	<TH>Age du Sixième Enfant :</TH>
            <TD><input name="age6" type="text"><br></TD>
        </Tr>
        <Tr>
        	<TH>Age du Septième Enfant :</TH>
            <TD><input name="age7" type="text"><br></TD>
        </Tr>

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    ou

    si tu souhaites conserver ton age1 age2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByTagName('age'+i)[0].style.display="none";
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms['formulaire'].elements['age'+i][0].style.display="none";
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonsoir,

    le 1er argument de la boucle for consiste à affecter une valeur à la variable incrémentée. Or ici tu as i>test.

    Peut-être as-tu voulu écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for(i=test;i<=10;i++)

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Par défaut
    salut auteur


    non non
    juste au dessus, je parametre la valeur de test donc ca c'est bon.

    je vais essayer la methode de SpaceFrog et vous tiens au courant

    merci beaucoup

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    Citation Envoyé par schwinny34 Voir le message
    juste au dessus, je parametre la valeur de test donc ca c'est bon.
    non ce n'est pas bon
    Comme le dit Auteur, le 1° argument doit être la valeur de départ.
    Un test n'a pas sa place ici (il ne sert à rien).
    Si tu souhaites conserver la valeur de i en entrée de boucle, ne mets rien ...

    A+

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Par défaut
    j'avais fait une erreur de copié collé :p

    voila ce qui marche


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    		for(i=1;i<=7;i++)
    		{
    			document.forms['formulaire'].elements['age'+i].style.display="none";	
    		}	
    		for(i=1;i<=document.formulaire.nbrenfants.value;i++)
    		{
    			document.forms['formulaire'].elements['age'+i].style.display="block";	
    		}

    Bon par contre, ce qui ne marche pas, c'est avec un div


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementsByTagName('age1').style.display="none";
    ni

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.forms['formulaire'].elements['age'+i].style.display="none";
    en parametrant le i


    voila le code html:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     <div title="age1">	
         <Tr>
        	<TH>Age du </TH>
            <TD><input name="lage1" type="text"><br></TD>
        </Tr>
        </div>

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    et

    pas étonnant ...
    mais tu cibles l'input ou le div ... ???

    si c'est le div, mets lui un id
    et passe par getElementById('age'+i)
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByTagName('age1').style.display="none";
    tu confonds les tag (div, span, p, a, input, etc.) avec l'attribut id d'un élément

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Par défaut
    ben en fait, j'ai une solution qui marche mais je voudrais passer par des div id pour etre tranquille.

    j'ai ca en javascript

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    	function enfant(obj)
    	{
    		var ValeurTotale = 4;
    		var temp = ValeurTotale - document.formulaire.nbrenfants.value;
    		for(i=1;i<=ValeurTotale;i++)
    		{
    			document.getElementById('age'+i).style.display="none";
    		}		
    		for(i=1;i<=document.formulaire.nbrenfants.value;i++)
    		{
    			document.getElementById('age'+i).style.display="block";
    		}
    	}
    puis en HTML ca

    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
     
     
     <div id="age1">	
         <Tr>
        	<TH>Age du </TH>
            <TD><input name="lage1" type="text"><br></TD>
        </Tr>
        </div>
     
        <div id="age2">	
         <Tr>
        	<TH>Age du </TH>
            <TD><input name="lage2" type="text"><br></TD>
        </Tr>
        </div>
     
        <div id="age3">	
         <Tr>
        	<TH>Age du </TH>
            <TD><input name="lage3" type="text"><br></TD>
        </Tr>
        </div>
     
        <div id="age4">	
         <Tr>
        	<TH>Age du </TH>
            <TD><input name="lage4" type="text"><br></TD>
        </Tr>
        </div>

    mais je reste bloquer car ca ne marche pas
    quelqu'un peux me dire ou je fais une erreur svp?

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    SI on les mets cote à cote tu verras sans doute mieux ton erreur ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('age'+i).style.display="block";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         <TD><input name="lage2" type="text"><br></TD>

    non toujours pas ??




    id != name
    je ne vois pas d'id dans tes balises input ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Si c'était pour masquer les div et non l'input lui-même, c'était presque bon.
    Sauf que la structure de ta table n'est pas correcte : un <div> ne peut pas englober un <tr></tr> ...
    Essaye peut être comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <tr id="age2">
        	<TH>Age du </TH>
            <TD><input name="lage2" type="text"><br></TD>
    </tr>
    En gardant la fonction comme elle est (enfin presque, mais les erreurs ne sont pas liées à ton problème)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function enfant()
    	{
    		var ValeurTotale = 4;
                  //	var temp = ValeurTotale - parseInt(document.formulaire.nbrenfants.value, 10);
    		for(i=1;i<ValeurTotale;i++)
    		{
    			document.getElementById('age'+i).style.display="none";
    		}		
    		for(i=ValeurTotale;i<=document.formulaire.nbrenfants.value;i++)
    		{
    			document.getElementById('age'+i).style.display="block";
    		}
    	}
    Ton paramètre "obj" ne sert à rien.
    temp non plus puisque tu ne l'utilises pas. Mais si tu souhaites l'utiliser, je l'ai corrigé ...

    A+

  12. #12
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    SI on les mets cote à cote tu verras sans doute mieux ton erreur ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('age'+i).style.display="block";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         <TD><input name="lage2" type="text"><br></TD>

    non toujours pas ??




    id != name
    je ne vois pas d'id dans tes balises input ...
    les div on un id :



    Une première erreur vient du code HTML : on n'encadre pas des balises utilisées pour les tableaux (tr, td, th, etc.) avec des balises div !

    La seconde erreur doit venir de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.formulaire.nbrenfants.value
    Il y a un autre moyen plus efficace (et plus sûr) pour accéder à la valeur sélectionnée d'une liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //pour connaitre l'index de l'option choisie
    var index = document.getElementById("idListe").selectedIndex; 
     
    // valeur de l'option choisie
    var valeur = document.getElementById("idListe").options[index].value;

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut

    en effet deuxième fois que je me fais avoir ...
    je l'ai même signalé plus haut ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  14. #14
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Auteur Voir le message
    Il y a un autre moyen plus efficace (et plus sûr) pour accéder à la valeur sélectionnée d'une liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //pour connaitre l'index de l'option choisie
    var index = document.getElementById("idListe").selectedIndex; 
     
    // valeur de l'option choisie
    var valeur = document.getElementById("idListe").options[index].value;
    Et même (tant qu'il ne s'agit pas de select mutiple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // valeur de l'option choisie
    var valeur = document.getElementById("idListe").value;


    A+

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Par défaut
    Merci a tous
    soucis resolue

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

Discussions similaires

  1. [XML][XSLT] Débutant {Probléme avec For-each-group}
    Par Silvia12 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 29/01/2006, 21h38
  2. [VB]Probleme avec for each .....
    Par STRUFIELD dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 20/01/2006, 08h31
  3. [MS-DOS] Cibler un répertoire avec For
    Par Furius dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 08/12/2005, 17h49
  4. [VB.NET] Problème avec For Each...
    Par cyrcroix dans le forum Windows Forms
    Réponses: 5
    Dernier message: 15/06/2005, 10h49
  5. qbasic : pause avec FOR-NEXT
    Par clood200 dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 08/08/2003, 16h51

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