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 :

Modification du contenu d'un <div>


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Par défaut Modification du contenu d'un <div>
    Bonsoir

    Pour mon site j'ai fais un petit programme avec formulaire qui a toute une liste de cases à cocher.

    Quand on coche une case cela modifie le contenu de la balise <div> qui se trouve juste après la case cochée, pour ajouter deux champs de saisi en plus pour mon formulaire.

    Quand je décoche cela supprime les deux champs.

    Le programme marche très bien sous firefox et IE8 mais pas sous IE6 et 7 ....

    Le problème vient que mon div se trouve juste après mon onclick que j'ai mis dans ma balise de la case a cocher. Comme on dirait que IE6 et 7 lit le programme de bas en haut, je voudrais savoir comment faire pour lui dire de lire de haut en bas. sans devoir changer la structure de mon programme (genre mettre mon div avant mon appel onclick)

    voici le programme version lite (avec juste une case à cocher)

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
    <meta http-equiv="X-UA-Compatible" content="IE=6" />
     
    </head>
     
    <body>
     
            <script type="text/javascript">
     
    		//<![CDATA[
     
    			function cocher(nom,table){
     
    				if(nom.checked){
     
    					divid=document.getElementById(table);
     
     
    					divid.innerHTML='<p>lvl du métier <input name="'+table+'lvl" type="text" size="5" maxlength="3" /><br /><br />Commentaire :<br /><textarea name="'+table+'texte" cols="90" rows="10"></textarea></p>';
     
    				}
    				else if(!nom.checked){
     
    				divid=document.getElementById(table);
     
    						divid.innerHTML='';
    				}
     
    			}
     
    			//]]>
     
    		</script>
     
                <form id="ref_met" action="enr_ref_met.php" method="post" name="ref_met">
     
                <p>
                Nom de la personne à r&eacute;f&eacute;rencer 
                <input name="nom" type="text" size="30" />
                </p>
     
          		<p>
                Son serveur
                	<select name="serveur">                	
                        <option></option>
                        <option>blablabla</option>				
                	</select>
               	</p>
     
    			<p>
     
     
     
                			<label>
               				 Alchimist
                			<input id="alchimistecheck" type="checkbox" name="alchimiste" onclick="cocher(alchimistecheck,'alchimiste')" />
                			</label>
     
    						<div id="alchimiste">
                			</div> 
     
                			</p>
     
     
     
                <p>
                <input name="code" type="password" id="code" size="60" /> Code
                </p>
     
     
                <p>
    		      <input type="submit" name="Envoyer" id="Envoyer" value="Envoyer" />
    		    </p>
     
                </form>
     
     
    </body>
    </html>

    J'ai mis <meta http-equiv="X-UA-Compatible" content="IE=6" />
    pour simuler le comportement de IE6

    Merci


    nuphius

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par nuphius Voir le message
    Comme on dirait que IE6 et 7 lit le programme de bas en haut
    Non, ce n'est pas le cas !

    En revanche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="cocher(alchimistecheck,'alchimiste')"
    Les arguments doivent être des chaines, essaye comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="cocher('alchimistecheck','alchimiste')"
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Par défaut
    Bonjour

    désolé pour le temps de réponse mais grosse journée de travail hier.

    j'ai testé avec uniquement des chaines passées à la fonction mais cela ne change rien.

    merci

    PS: je disais que IE lit du bas vers haut car quand je mets la balise div "alchimiste" au dessus de l'appel onclick tout marche. quand je remets la balise en dessous sa ne marche plus.

    Et je voudrais trouver une solution en laissant la balise en dessous.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 354
    Par défaut
    je vois pas d'où viens tas variable 'alchimistecheck' dans t'as fonctions onclick.
    je suis pas spécialiste de la meta "X-UA-Compatible" , mais dans IE, tout les id sont aussi des variables globale référençant l'élément, sans tas meta, normalement ca devrait pas marché sous FF.

    essaye ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input id="alchimistecheck" type="checkbox" name="alchimiste" onclick="cocher(this,'alchimiste')" />
    j'ai juste remplacé 'alchimistecheck' par this

    bye

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Par défaut
    Citation Envoyé par kimjoa Voir le message
    je vois pas d'où viens tas variable 'alchimistecheck' dans t'as fonctions onclick.
    je suis pas spécialiste de la meta "X-UA-Compatible" , mais dans IE, tout les id sont aussi des variables globale référençant l'élément, sans tas meta, normalement ca devrait pas marché sous FF.

    essaye ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input id="alchimistecheck" type="checkbox" name="alchimiste" onclick="cocher(this,'alchimiste')" />
    j'ai juste remplacé 'alchimistecheck' par this

    bye

    alchimistecheck est identique à this, il est traité de la même manière.

    la meta "X-UA-Compatible" est juste la pour simuler le comportement de IE6 si j'ustilise le navigateur IE. Cette balise n'est pas prise en compte par FF. Mon programme actuelle fonctionne sous FF 3.5, Google chrome et IE 8 avec ou sans la méta.

    le problème ne vient pas de l'objet passé en variable car quand je le teste avec un alerte plus loin dans le programme il existe bien.

    Sous IE 6 et 7 une erreur m'est retournée sur cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    divid.innerHTML='<p>lvl du métier <input name="'+table+'lvl" type="text" size="5" maxlength="3" /><br /><br />Commentaire :<br /><textarea name="'+table+'texte" cols="90" rows="10"></textarea></p>';
    javascript ne peut pas modifier la balise div car elle se trouve après l'appel onclick. Si je met la balise div avant l'appel onclick sa marche, mais je veux conserver la place de ma balise, je veux trouver une solution à ce bug et éviter les solutions de contournement.

    nuphius

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 354
    Par défaut
    j'ai bien galéré avant de trouver mais je j'ai trouvé

    En faite IE ne fait pas de différence entre les id et les name, hors , tu as une fois un attribute name="alchimiste", et une autre fois id="alchimiste"

    faut changer de nom l'un des deux

    bye

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Par défaut
    Oui effectivement il y a un bug de ce type sous IE mais dans mon programme mon id s'appel pas 'alchimiste' mais achimistecheck' donc sa ne doit pas venir de la

    merci

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 354
    Par défaut
    j'ai pas bien compris tas remarque , qu'elle id , enfin pour qu'elle élement?

    Chez moi ce code marche très bien :
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
    <meta http-equiv="X-UA-Compatible" content="IE=6" />
     
    </head>
     
    <body>
     
            <script type="text/javascript">
     
    		//<![CDATA[
     
    			function cocher(nom,table){
     
    				if(nom.checked){
     
    					divid=document.getElementById(table);
     
     
    					divid.innerHTML='<p>lvl du métier <input name="'+table+'lvl" type="text" size="5" maxlength="3" /><br /><br />Commentaire :<br /><textarea name="'+table+'texte" cols="90" rows="10"></textarea></p>';
     
    				}
    				else if(!nom.checked){
     
    				divid=document.getElementById(table);
     
    						divid.innerHTML='';
    				}
     
    			}
     
    			//]]>
     
    		</script>
     
                <form id="ref_met" action="enr_ref_met.php" method="post" name="ref_met">
     
                <p>
                Nom de la personne à r&eacute;f&eacute;rencer 
                <input name="nom" type="text" size="30" />
                </p>
     
          		<p>
                Son serveur
                	<select name="serveur">                	
                        <option></option>
                        <option>blablabla</option>				
                	</select>
               	</p>
     
    			<p>
     
     
     
                			<label>
               				 Alchimist
                			<input id="alchimistecheck" type="checkbox" name="alchimiste" onclick="cocher(this,'alchimisteDef')" />
                			</label>
     
    						<div id="alchimisteDef">
                			</div> 
     
                			</p>
     
     
     
                <p>
                <input name="code" type="password" id="code" size="60" /> Code
                </p>
     
     
                <p>
    		      <input type="submit" name="Envoyer" id="Envoyer" value="Envoyer" />
    		    </p>
     
                </form>
     
     
    </body>
    </html>
    bye

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Par défaut
    oups dsl j'ai mal compris je pensé que tu parlé de l'id de la balise où il y a le onclick.

    oui effectivement tu as raison l'id de ma balise div et le même que le "name" de ma balise avec le onclick ce qui est une grosse erreur de ma part (est pourtant je le savais qu'il ne faut pas faire sa, mais pas fais attention). Je vais manger je teste sa dans 20 min, mais je pense que sa devrais être bon.

    merci beaucoup

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Par défaut
    oui effectivement sa marche


    merci encore

    bonne journée

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

Discussions similaires

  1. Modification du contenu d'une balise div en fonction de la sélection
    Par temperature dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/11/2007, 11h47
  2. Modification du contenu d'une page d'un repertoire virtuel
    Par celine_tr dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 24/08/2006, 16h17
  3. Réponses: 2
    Dernier message: 28/12/2005, 16h53
  4. [vb6 et access] problème de modification de contenu de champ
    Par dj_tess dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 22/12/2005, 19h26
  5. Modification du contenu d'un Request() ??
    Par Invité dans le forum ASP
    Réponses: 5
    Dernier message: 05/07/2005, 14h31

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