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 :

Style CSS ne s'applique dans un InnerHTML


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 131
    Par défaut Style CSS ne s'applique dans un InnerHTML
    Bonjour à tous,

    Voilà j'ai une fonction qui est comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function update_menu(){
            menu = document.getElementById("main-nav");
            menuenplus = '<li class="write"><a href="#" title="Write">Write</a></li>';
            menu.innerHTML += menuenplus;
         }
    et qui permet de modifier le contenu d'un div.
    L'élément s'ajoute bien dans mon div en question mais le style ne s'applique pas à celui-ci.

    Est-ce un souci de DOM ? autre chose ? Souci JS ?

    Merci de votre aide précieuse

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function update_menu(){
            menu = document.getElementById("main-nav");
            menuenplus =document.createElement('li')
            menuplus.className="write"
            pluslink=document.createElement('a')
            pluslink.href="#" 
            pluslink.title="Write"
            pluslink.appendChild(document.createTextNode('Write');
            menuplus.appendChild(pluslink)
            menu.appendChild(menuplus);
         }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 131
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function update_menu(){
            menu = document.getElementById("main-nav");
            menuenplus = document.createElement('li')
            menuplus.className="write"
            pluslink = document.createElement('a')
            pluslink.href="#" 
            pluslink.title="Write"
            pluslink.appendChild(document.createTextNode('Write');
            menuplus.appendChild(pluslink)
            menu.appendChild(menuplus);
         }
    merci pour cette réponse
    MAIS
    du coup il ne se passe plus rien, plus aucun ajout dans mon div
    J'ai ajouté les ; à la fin de chaque ligne
    Et voici le HTML original que je souhaite ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <li class="write"><a href="#" title="Write">Write</a>				
    <ul>
    <li><a href='javascript:loadHTML("ajax-modal.html");' title="Articles">Articles</a></li>
    <li><a href='javascript:loadHTML("ajax-modal.html");' title="Add article">Add article</a></li>
    </ul>
    </li>
    Donc si je comprends bien ce que tu me donnes correspond à la bonne pratique à utiliser pour ajouter des éléments versus le InnerHTML ?

    menuplus est une nouvelle variable ou dois-je lire menuenplus ?
    Sinon est-ce que je suis censé créer autant de variable que d'élements à créer ?

    Merci à toi

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Par défaut
    Le faire en innerHTML est plus efficace en terme de performances. Mais j'aurai ajouté le LI plutot en DOM et le contenu du LI en innerHTML. Ensuite je fais un
    monNaVBidule.appendChild(li).

    Là ton problème il doit être ailleurs. Regarde bien avec firebug ce que tu obtiens en code généré, tu découvriras peut-être pourquoi ça déconne.

    De plus montre nous ta CSS associé.

    Désolé mais là on manque ENORMEMENT d'éléments pour pouvoir t'aider

  5. #5
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 131
    Par défaut
    Bon j'avance

    avec cela, j'arrive à m'en sortir à epu près
    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
    function update_menu(){
            menu = document.getElementById("menu");
            // creation du li
            menuenplus = document.createElement('li') ;
            menuenplus.className="write";
     
            // creation du lien hypertexte
            pluslink=document.createElement('a') ;
            pluslink.href="#";
            pluslink.title="Write" ;
            //pluslink.appendChild(document.createTextNode('Write');
     
            //menuenplus.appendChild(pluslink) ;
            menu.appendChild(menuenplus);
         }
    A peu près car la ligne pluslink.appendChild(document.createTextNode('Write'); fait que cela ne fonctionne plus !

    @dukej : je croyais que c'était le contraire !!! pour ce qui des performances !
    N'est-ce pas plus propre de le faire comme cela ???

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    ton ajout doit IMPERATIVEMENT être conforme pour ne pas avoir de surprise, dans ton cas la construction, l'enchaînement des balises, n'est pas valables.
    On s'approcherait plutôt de cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <ul class="write">
      <li>Write
        <ul>
          <li><a href='#' onclick="loadHTML('ajax-modal.html');" title="Articles">Articles</a></li>
          <li><a href='#' onclick="loadHTML('ajax-modal.html');" title="Add article">Add article</a></li>
        </ul>
      </li>
    </ul>
    quelques corrections au passage pour plus de propreté

Discussions similaires

  1. Style CSS ne s'appliquant pas
    Par Jenojen dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 08/08/2011, 18h04
  2. Réponses: 0
    Dernier message: 17/02/2011, 15h21
  3. le style .css ne s'applique pas sur mozilla
    Par steware1 dans le forum ASP.NET
    Réponses: 17
    Dernier message: 16/09/2010, 11h10
  4. [CSS 2] Style CSS qui s'applique sur un élément non concerné [IE8]
    Par alexgille dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 10/08/2010, 11h09
  5. [CSS 2] Comment appliquer un style CSS dans du code php
    Par akiniva dans le forum Mise en page CSS
    Réponses: 15
    Dernier message: 26/08/2009, 18h49

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