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 :

Petit bug sur IE avec style.color


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut Petit bug sur IE avec style.color
    Bonjour,

    j'ai fait une petite fonction qui permet de changer des éléments de style d'un item sur ma page html. En gros, quand je sélectionne l'item, le change le fond, la couleur du texte et le fait qu'il soit en gras ou non. Mais pour réinitialiser à chaque fois que je change d'item, j'ai fait une boucle qui récupère la liste des éléments et qui les passe à "null". ca fonctionne impecc sur tous les navigateurs, sauf .... IE bien sûr ...

    Voici ma fonction:

    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
    function show_faq(item)
    {
    elmts = document.getElementsByClassName("faq_item");
    for(var i=0;i<elmts.length;i++)
    {
    elmts[i].style.display='none';
    }
    elmts2 = document.getElementsByClassName("faq_headline");
    for(var i=0;i<elmts2.length;i++)
    {
    elmts2[i].style.color=null;
    elmts2[i].style.backgroundColor=null;
    elmts2[i].style.fontWeight=null;
    }
    document.getElementById(item).style.display="block";
    var faq = "faq" + item;
    document.getElementById(faq).style.backgroundColor="#064450";
    document.getElementById(faq).style.color="#ffffff";
    document.getElementById(faq).style.fontWeight="bold";
    }
    Et mon html:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <div id="mod_faqcust">
    <div id="faq26" class="faq_headline" onclick="show_faq('26');"> item1 </div>
    <div id="faq25" class="faq_headline" onclick="show_faq('25');" style="background-color: rgb(6, 68, 80); color: rgb(255, 255, 255); font-weight: bold;"> item2 actuellement sélectionné </div>
    <div id="faq21" class="faq_headline" onclick="show_faq('21');"> item3 </div>
    <div id="faq19" class="faq_headline" onclick="show_faq('19');"> item4 </div>
    <div id="faq17" class="faq_headline" onclick="show_faq('17');"> item5 </div>
    <div class="faq_text">
    ...
    ...

    Auriez-vous une idée svp ?

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 82
    Points : 132
    Points
    132
    Par défaut
    getElementsByClassName n'est pas supportée sur IE c'est pour ça que le style de tes éléments n'est pas mis à jour... (sacré IE).

    Pour y remédier tu peux passer par du jQuery ou en sélectionnant tes éléments d'une autre manière qu'avec la méthode getElementsByClassName.

  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
    En l’occurrence, on ne peut pas particulièrement blâmer IE de n'avoir pas implémenté getElementsByClassName() avant que cette méthode n'ai été introduite par EcmaScript 5...
    Aucun navigateur ne l'a fait et IE9 supporte parfaitement cette méthode.
    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
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Il y a aussi le script de SpaceFrog.

    A+.

  5. #5
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut
    Merci pour les réponses

    Je suis sur IE9 et je confirme que ça ne fonctionne pas sur ce navigateur.

    Je vais aller voir le script de SpaceFrog. merci

  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
    Je suis sur IE9 et je confirme que ça ne fonctionne pas sur ce navigateur.
    Ben moi je te confirme que c'est toi qui ne sait pas l'utiliser !

    Code html : 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
    <!doctype html>
    <html>
    <head>
    	<meta charset="utf-8" />
    	<title>getElementsByClassName</title>
    </head>
    <body>
    	<div class="foo"></div>
    	<div class="foo"></div>
    	<div class="foo"></div>
    	<div class="foo"></div>
    	<script>
                    alert(document.getElementsByClassName('foo').length);
            </script>
    </body>
    </html>
    fonctionne parfaitement !
    Nom : className.png
Affichages : 36
Taille : 53,4 Ko
    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 habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut
    exact, il récupère bien les éléments. En fait ce n'est pas le getElementsByClassname qui pose problème mais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    elmts2[i].style.color=null;
    elmts2[i].style.backgroundColor=null;
    elmts2[i].style.fontWeight=null;
    qui ne sont pas reconnus par IE. Comment puis-je remettre le style par défaut sur IE ? Finalement, c'est bien ça le problème.

  8. #8
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut
    et je viens de trouver. IE n'aime pas null. Du coup j'initialise à "" pour remettre le style par défaut.

    Merci à tous pour votre aiiiidddeeee :d

  9. #9
    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
    Que ce soit pour IE ou pour les autres navigateurs, remettre le style par défaut se fait en affectant une chaine vide à la propriété :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    elmts2[i].style.color='';
    elmts2[i].style.backgroundColor='';
    elmts2[i].style.fontWeight='';
    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

  10. #10
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut
    Yessss. J'ai vu Merccciii . tip top, ça marche au poil

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

Discussions similaires

  1. Petit bug sur des onglets
    Par pierre.coudert dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 18/01/2007, 11h28
  2. [débutant]petit problème sur formulaire avec onglets
    Par Christophe93250 dans le forum Access
    Réponses: 2
    Dernier message: 06/01/2006, 10h46
  3. Réponses: 1
    Dernier message: 29/11/2005, 17h32
  4. [RegEx] Petit Bug sur Expression Régulière
    Par Delphy113 dans le forum Langage
    Réponses: 2
    Dernier message: 25/09/2005, 20h48

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