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 :

HTML généré par javascript : css ignoré par IE


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 17
    Points
    17
    Par défaut HTML généré par javascript : css ignoré par IE
    Bonsoir,

    J'ai un petit soucis :

    je génère des éléments html à l'aide de javascript/DOM (createElement), puis je donne à ces éléments des class CSS à l'aide de la méthode setAttribute avant d'insérer le noeud créé dans la page.

    Seulement Internet Explorer (6 et 7) ne prends pas en compte les propriétés CSS que l'élément devrait avoir vis à vis de sa classe (sous firefox ça marche).

    Un petit exemple qui illustre le 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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <style>
    .uneClasse {color:red;}
    </style>
     
    <script type="text/javascript">
     
    	function creerSpan()
    	{
    		newSpan = document.createElement("span");
    		newSpan .setAttribute("class","uneClasse");
    		newSpan .innerHTML="Test";
    		document.getElementById("conteneur").appendChild(newSpan);
    	}
     
    </script>
     
     
     
    <div id="conteneur">
    	<span class="uneClasse">Test</span>
    </div>
     
    <button onclick="javascript:creerSpan();">Hop</button>
    ce code devrait en théorie ajouter des textes "Test" en rouge, ce que fait firefox mais pas IE (il crée les éléments mais ils restent noir), ce dernier semble ne pas appliquer de style lorsqu'un élément est rajouté dynamiquement par javascript.

    Est-ce quelque chose qui m'échappe ? Un problème d'IE ? Quelqun a t'il déja été confronté à ce problème ?

    Merci d'avance de vos lumières parce que là je sèche !

  2. #2
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    je crois que pour IE faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    newSpan.class="uneClasse";
    Mais essaye déjà en enlevant l'espace devant le "." ...

    A+

  3. #3
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    IE ne reconnaît pas la méthode :
    Je corrigerais juste un petit truc du code de E.Bzz :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    newSpan.className="uneClasse";

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 17
    Points
    17
    Par défaut
    Merci !!

    Je cherchais pas du tout le problème à ce niveau là.

    D'autant que cette méthode semblait marcher pour d'autres attributs.

    Apparement setAttribute est censé marcher avec IE mais souffre de nombreuses lacunes (pour ceux que ça intéresse ce lien propose quelques rustines).

    L'équivalent avec setAttribute qui marche sous IE est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    newSpan.setAttribute("className","uneClasse");
    (testé IE7)

    cependant celui là ne marche pas avec firefox ... je préfère donc ta solution Bisûnûrs qui marche avec les deux !

    Merci à vous deux !

  5. #5
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Bisûnûrs
    Je corrigerais juste un petit truc du code de E.Bzz :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    newSpan.className="uneClasse";
    Ouhla !
    Effectivement

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

Discussions similaires

  1. Animation CSS piloté par JavaScript
    Par honizukaz dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 16/08/2014, 23h32
  2. Ouvrir une page html et en modifier le contenu par Javascript
    Par defluc dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 28/11/2012, 14h50
  3. Réponses: 2
    Dernier message: 17/03/2009, 20h06
  4. Initialisation de la propriété CSS display par Javascript
    Par boutmos dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 06/01/2009, 10h34
  5. Réponses: 3
    Dernier message: 22/02/2008, 09h55

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