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 :

innerHTML : fermeture de balise automatique ??


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut innerHTML : fermeture de balise automatique ??
    Bonjour,

    J'utilise l'attribut innerHTML en JavaScript pour modifier le contenu d'une balise div. Voilà le code que j'ai tapé (en gros) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     document.getElementById("mondiv").innerHTML = "<table>";
     alert(document.getElementById("mondiv").innerHTML);
    Cependant le résultat affiché est : "<table></table>"
    Or après ces lignes de code je continue à créer mon tableau en ajoutant des tr, td, etc. J'ai l'impression que l'attribut innerHTML ferme automatiquement les balises ouvertes. Comment empêcher cela ?

    Merci beaucoup pour votre aide !

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    with(document.getElementById("mondiv")){
    innerHTML = "<table>"; 
    innerHTML += "<tr><td>coucou</td></tr>";
    }
    sinon apres tu passes par le dom et createElement

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    justement ton code je ne crois pas qu'il fonctionne.
    Sinon oui je pense passer par CreateElement.

    J'ai une question à propos de cela d'ailleurs : comment ajouter un attribut à un élément qu'on a créé. Par exemple, je souhaiterai créer un élément "a" appartenant à "td". Ensuite je souhaite ajouter des attributs à "a". Comment faire cela ?

    En gros j'aurai ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ligne = document.createElement ('tr');
    cell = document.createElement ('td');
    lien = document.createElement('a');
    cell.appendChild (lien);
    ligne.appendChild(cell);
    document.getElementById ('superTableau').appendChild (ligne);
    Et bien sur un peu plus loin j'ai un tableau "vide" avec id="super Tableau".
    Comment faire pour ajouter un attribut à l'élément 'a' (par exemple onClick) Et comment ajouter son contenu ?

    Merci beaucoup !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    Bon apparemment il faut faire qqch dans ce gout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          attribut1 = document.createAttribute('onClick');
    Mais je n'ai pas trouvé comment remplir le onClick...

    Si vous savez comment faire merci de me l'indiquer

  5. #5
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Fais un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    lien = document.createElement('a');
    lien.setAttribute("onclick","pouf()");
    cell.appendChild (lien);
    Sinon, tu peux egalement utiliser la syntaxe habituelle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    lien.onclick="pouf()";
    ou
    lien.onclick=pouf;
    Dernière possiblité, pour les evenements:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    lien.attachEvent("click","pouf()"); //IE
    lien.addEventListener("onclick",pouf,false) //FFx

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    Bon j'ai réussi à ajouter un attribut (onClick).
    Pour cela j'ai utiliser CreateAttribute.
    Dans cette attribut je souhaite appelé une fonction javascript donc j'ai mis ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            attribut.nodeValue = "javascript: mafonction();";
    Mais la fonction ne s'execute pas quand je clique sur mon lien !!
    Je ne vois pas du tout ce qui cloche.
    J'ai visualisé ce code html à l'intérieur de mon tableau (à l'aide d'un alert de innerHTML) et mon code semble nickel! je vois pas du tout ce qui pourrait clocher!

    Avez vous une réponse ?

  7. #7
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par pekka77
    attribut.nodeValue = "mafonction();";
    javascript: ça sert à rien du tout, il attends pas une recette de crepes suzette

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Citation Envoyé par pekka77
    justement ton code je ne crois pas qu'il fonctionne.
    tu crois pas ou t as essayé ?

    le innerhtml marche tres bien, je sais pas ce que tu fais dans ton code ...

  9. #9
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    juste pour preciser la pensée de Denis C dans sa syntaxe entre le setAttribute et le onclick ...
    il faut doubler les instruction si tu veux que ce soit pris en compte par IE et Firefox:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    lien = document.createElement('a');
    lien.setAttribute("onclick",function{pouf()});
    lien.onclick= function {pouf()}
    cell.appendChild (lien);

  10. #10
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lien.onclick= function {pouf()}
    ca marche pas pour les deux ca ?

  11. #11
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    non la combinaison des deux lignes marche pour les deux ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lien.setAttribute("onclick",function{pouf()});
    lien.onclick= function {pouf()}

    sinon pour résoudre le problème de la concaténation de code ...
    concatène le code de ton tableau dans une variable et n'attribue la variable en innerHTML qu'une fois le code complet... celà évitera à certains browsers de faire de l'autocomplétion ..

  12. #12
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    jamais eu d'erreur d autocomp pour le innerHTML quoique je m en sert plus remarque.

    pour ton histoire du setAttribute, je ne fais que des machin.onclick=function et pourtant ca marche ie et ffx

  13. #13
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    ???
    ben pour moi le machin.onclick= ne fonctionne pas universellement

  14. #14
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    c'est bon a savoir alors, je le doublerais a l avenir au cas ou

  15. #15
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    je double toujours desormais...

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    merci pour toutes vos réponses

Discussions similaires

  1. [DOM] innerhtml et fermeture de balise
    Par riete dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 23/10/2008, 13h36
  2. Fermeture de fenêtre automatique
    Par xave dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/01/2007, 13h14
  3. [XHTML] outil de verification de fermeture de balise
    Par stross dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 18/07/2006, 17h06
  4. [XSL] ouverture fermeture de balise
    Par sebus dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/03/2006, 13h00
  5. Problème de fermeture de balise <tr>
    Par nuage dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 18/03/2004, 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