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 :

IE : propriété display ou innerHTML impossible..


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Par défaut IE : propriété display ou innerHTML impossible..
    Bonjour...

    Bon je viens poster ici parce que je tourne en rond depuis pas mal de temps et pas moyen de trouver la solution.

    Mon problème est pas dur à expliquer. J'ai un tableau contenant des cellules, 1 de ces cellules s'affichent dynamiquement. En gros j'ai deux cellules dans mon code et l'une ou l'autre s'affiche selon des paramètres.

    Dans un premier temps je suis donc passé par un innerHTML appelé sur le parent de ma cellule pour y mettre le contenu 1 ou le contenu 2, ça passait bien sous FF mais pas sous IE qui me pond une erreur...

    J'ai donc essayé la propriété display, je mets dans mon code 2 cellule et suivant les paramètre je change le display en table-cell ou en none... ici pareil, ok sous FF et ça chie une erreur sous IE...

    Je vais essayer de vous résumer mon code car il est assez long (et qui plus est je ne peux pas le donner comme il est là )...

    le code php qui génère mes cellules...
    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
     
    <?php
    // ma cellule 1
    $cell = "<td id=\"fields\" colspan=7>";
    $cell .= "<table><tr>";
    $cell .= "<td>";
    $cell .= "<select name =\"select1\" id=\"select1\">";
    $requete = "je recup les truc à mettre dans le select1 dans ma bdd";
    while ($res=mysql_fetch_array($result)) {
        $cell .= "<option value=\"".trim($res["champ1"]."\" ".(trim($res["champ2"])==$test?"selected":"").">".trim($res["champ3"])/"</option>";
    }
    $cell .= "</select>";
    $cell .= "</td>";
    $cell .= "<td><input type=\"text\" name=\"text1\" id=\"text1\" Onfocus=\"document.getElementById(\'text1\').className=\'focus_text\';\" Onblur=\"document.getElementById(\'nom\').className=\'blur_text\';\"></td>";
    $cell .= "</tr></table>";
    $cell .= "</td>";
     
    // ma cellule 2
    $cellbis = "<td id=\"fieldsbis\" colspan=7>";
    // pour le reste elle est construite comme la précédente sauf que y'a 2 select (select2 et select3) et 2 champs text (text2 et text3) dans le table de ma cellule
    ?>
    le code HTML où je vais insérer l'une de mes cellules... (un simple table)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ...
    <tr id="dynamic">
        <? if(test==1 || test==3) {
                  echo $cell;
            } else {
                  echo $cellbis;
            } ?>
    </tr>
    ...
    le code js pour insérer par innerHTML... ( fonction que j'appelle suite à un changement sur un autre select => onchange="check_cell(this.value);" )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function check_cell(test) {
         var cell = '<?=$cell?>';
         var cellbis = '<?=$cellbis?>';
         if(test==1 or test==3) {
               document.getElementById("dynamic").innerHTML = cell;
         } else {
               document.getElementById("dynamic").innerHTML = cellbis;
         }
    }
    Je crois n'avoir rien oublié pour la partie utilisant innerHTML...

    Pour la partie display j'ai pas trop changé mon code, c'est juste que dans mon <tr> je mets mes deux cellules mais une en "display:none;", l'autre étant en "display:table-cell;" et ma fonction check_cell agit directement sur le style.display de mes cellules pour les mettre en none ou en table-cell...

    Voilà... toute ces solutions fonctionnent sous FF mais pas sous IE qui pond une erreur sur soit le innerHTML soit le display... quelqu'un a une idée svp ?

    EDIT: ah oui j'ai testé le appendChild aussi...

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    this.value
    d'un select marche mal avec ie

  3. #3
    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 Matthieu2000 Voir le message
    d'un select marche mal avec ie
    et sont de toutes façons de type caractère (comme tout .value)A+

  4. #4
    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
    Ensuite, ton code semble montrer quelques confusions entre JavaScript et PHP... ce serait possible d'avoir le code HTML généré ?
    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

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Par défaut
    oui excusez moi... mes test sont bien sous la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test == '01' or test == '03'
    ça passe très bien...

    @Bovino : je comprends pas trop pourquoi tu me dis que je confonds JS et PHP ?
    Et malheureusement non je peux pas vous filer le code générer à moins de le nettoyer mais ça va prendre du temps...

    Si tu dis que je confonds JS et PHP à cause de ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <script type="text/javascript">
    function check_cell(test) {
         var cell = '<?=$cell?>';
         var cellbis = '<?=$cellbis?>';
         if(test==1 or test==3) {
               document.getElementById("dynamic").innerHTML = cell;
         } else {
               document.getElementById("dynamic").innerHTML = cellbis;
         }
    }
    </script>
    ça dans ma page ça génère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <script type="text/javascript">
    function check_cell(test) {
         var cell = 'tout le contenu de la variable php $cell';
         var cellbis = 'tout le contenu de la variable php $cellbis';
         if(test==1 or test==3) {
               document.getElementById("dynamic").innerHTML = cell;
         } else {
               document.getElementById("dynamic").innerHTML = cellbis;
         }
    }
    </script>
    Je transfère ma variable PHP dans mon code JS et ça passe la plupart du temps, faut juste faire attention aux " ' \" \'

  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 : 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 Darkroro Voir le message
    @Bovino : je comprends pas trop pourquoi tu me dis que je confonds JS et PHP ?
    Je disais ça parce que les similitudes de nommage et le fait que cette erreur est assez fréquente m'y ont fait penser (d'où l'emploi de "semble montrer")

    En revanche, j'avais pas fait gaffe à ça :
    or n'existe pas en JavaScript, c'est plutôt :
    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

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/12/2012, 17h04
  2. innerHTML : impossible de visualiser des objects
    Par snopims dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/04/2010, 14h42
  3. Réponses: 2
    Dernier message: 17/08/2008, 20h58
  4. ma propriété display:inline ne fonctionne pas
    Par Ekimasu dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 15/11/2007, 10h41
  5. [DOM] Modification innerHTML impossible
    Par Christophe Charron dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/05/2007, 13h37

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