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 :

[DOM] Petit soucis avec innerHTML et ie


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de dervish
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Points : 105
    Points
    105
    Par défaut [DOM] Petit soucis avec innerHTML et ie
    Bonjour,
    j'ai un script qui récupère une chaine de caractères "<option name="nom">...</option>..." via un requete XHR et la rajoute via innerHTML à un élément <select>.
    La page générée est conforme XHTML1.0, le script fonctionne parfaitement sous firefox tant sous windows que linux.
    Par contre, sous ie7.0.5730.13, je récupères bien ma chaine de caractère (je la visualise via un alert) mais quand je fais mon innerHTML, la première balise <option> disparaît (je vois le résultat dans un alert et dans les sources). Impossible de comprendre ce qui se passe. Si quelqu'un avait une piste, ça m'aiderait beaucoup.
    Par avance merci.

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    peux tu nous montrer ta source généré , ainsi que le code html récupéré ??
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  3. #3
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Il ne faut pas utiliser de innerHTML pour ajouter des options à un select !
    Il est préférable d'utiliser les méthode du DOM (createElement(), appendChild).
    Pour plus d'infos, faire une petite recherche sur ce forum (sujet maintes fois traité) et dans les contributions.
    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

  4. #4
    Membre régulier Avatar de dervish
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Points : 105
    Points
    105
    Par défaut
    Bonsoir et merci,
    voici la source js:
    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
     
    valRequete: function(){
            var requete = createXHR();
            requete.open("POST","nestor.php", true);
            requete.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            var courantNestor = this
            if(this.requetes.length > 0){
                requete.onreadystatechange = function(){
                    if(requete.readyState != 4) { return; }
                    if(requete.status != 200){
                        return;
                    } else {
     
                    // c'est ici que ça se passe
     
                        var nestorTmp = requete.responseText;
                        alert(nestorTmp);
                        courantNestor.listeResultat.innerHTML = nestorTmp;
                        alert(courantNestor.listeResultat.innerHTML);
     
                    //
     
     
                        courantNestor.boutVal.removeChild(courantNestor.icone);
                        courantNestor.boutVal.innerHTML = 'Valider';
                        courantNestor.boutVal.onclick = function(){
                            courantNestor.valRequete();
                        };
                    };
                };
                var tmp = [];
                for(id in this.requetes){
                    tmp.push(this.requetes[id].getRequete());
                };
                var corps = "type=recherche&valeur=" + encodeURIComponent(tmp) + "&objet=" + this.selObjet.value;
                requete.send(corps);
                this.attendre(this.boutVal);
            };
        },
    Dedans, courantNestor vaut au début:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <select id="listeResultat" size="6" multiple="multiple" name="listeResultat">
        <option value="_NULL_">Aucun r&eacute;sultat...</option>
    </select>
    le alert(nestorTmp) donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <OPTION value="d1158">A**** V**** [***] </OPTION>
    <OPTION value="c1139">A** Nathalie [**** ] </OPTION>
    <OPTION value="c630">A*** Chadia (****) [****] </OPTION>
    <OPTION value="c582">A*** Farid [****] </OPTION>
    <OPTION value="c1151">A*** Fedaa [****] </OPTION>
    <OPTION value="c1098">A*** Frédéric [**** ] </OPTION>
    <OPTION value="c641">A*** Nathalie [****] </OPTION>
    le alert(courantNestor.listeResultat.innerHTML) donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    A**** V**** [***] </OPTION>
    <OPTION value="c1139">A** Nathalie [**** ] </OPTION>
    <OPTION value="c630">A*** Chadia (****) [****] </OPTION>
    <OPTION value="c582">A*** Farid [****] </OPTION>
    <OPTION value="c1151">A*** Fedaa [****] </OPTION>
    <OPTION value="c1098">A*** Frédéric [**** ] </OPTION>
    <OPTION value="c641">A*** Nathalie [****] </OPTION>
    (J'ai juste étoilé les noms)
    Ceci est généré par un code php extrayant des données d'une base MySQL

    J'espère avoir été complet.

  5. #5
    Membre régulier Avatar de dervish
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Points : 105
    Points
    105
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Il ne faut pas utiliser de innerHTML pour ajouter des options à un select !
    Il est préférable d'utiliser les méthode du DOM (createElement(), appendChild).
    Pour plus d'infos, faire une petite recherche sur ce forum (sujet maintes fois traité) et dans les contributions.
    Soit, j'ai bien vu mais j'aimerai bien comprendre où passe la balise <option> sous ie7 en fait...
    mais merci tout de même pour la précision.

  6. #6
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    la première balise <option> disparaît
    Laquelle ? Celle qui est présente à l'origine ou la première de ton responseText ?
    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

  7. #7
    Membre régulier Avatar de dervish
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Points : 105
    Points
    105
    Par défaut
    En fait le code remplace ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="_NULL_">Aucun r&eacute;sultat...</option>
    Par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    A**** V**** [***] </OPTION>
    <OPTION value="c1139">A** Nathalie [**** ] </OPTION>
    <OPTION value="c630">A*** Chadia (****) [****] </OPTION>
    <OPTION value="c582">A*** Farid [****] </OPTION>
    <OPTION value="c1151">A*** Fedaa [****] </OPTION>
    <OPTION value="c1098">A*** Frédéric [**** ] </OPTION>
    <OPTION value="c641">A*** Nathalie [****] </OPTION>
    alors que la réponse reçue est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <OPTION value="d1158">A**** V**** [***] </OPTION>
    <OPTION value="c1139">A** Nathalie [**** ] </OPTION>
    <OPTION value="c630">A*** Chadia (****) [****] </OPTION>
    <OPTION value="c582">A*** Farid [****] </OPTION>
    <OPTION value="c1151">A*** Fedaa [****] </OPTION>
    <OPTION value="c1098">A*** Frédéric [**** ] </OPTION>
    <OPTION value="c641">A*** Nathalie [****] </OPTION>
    c'est le: <OPTION value="d1158"> qui vire...

  8. #8
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    c'est un bug connu d'IE (une petite recherche google, s'y ou plait)

  9. #9
    Membre régulier Avatar de dervish
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Points : 105
    Points
    105
    Par défaut
    ok
    merci pour la réponse, j'avais cherché mais manifestement pas avec les bons mots.

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

Discussions similaires

  1. petit soucis avec mon graveur
    Par Vador dans le forum Périphériques
    Réponses: 8
    Dernier message: 02/11/2005, 14h58
  2. petit soucis avec les listes
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/09/2005, 10h08
  3. Petit souci avec clause where
    Par ybruant dans le forum SQL
    Réponses: 1
    Dernier message: 21/07/2005, 22h10
  4. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/04/2005, 13h45
  5. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52

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