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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé 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
    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
    Par défaut
    peux tu nous montrer ta source généré , ainsi que le code html récupéré ??

  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 : 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
    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 confirmé 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
    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.

  5. #5
    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
    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

  6. #6
    Membre confirmé 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
    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...

  7. #7
    Membre confirmé 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
    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.

+ 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