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 :

[DOM] Code généré par javascript inaccessible


Sujet :

JavaScript

  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : mars 2002
    Messages : 899
    Points : 1 100
    Points
    1 100
    Par défaut [DOM] Code généré par javascript inaccessible
    J'ai une partie de ma page dynamique, et selon un changement de valeur dans un select, change le innerHTML d'un <TR> de ma page.
    Le problème est que j'aimerais ensuite pouvoir accéder aux éléments que j'ai écrit dynamiquement, et que le navigateur me répond que mon nouvel élément "n'a pas de propriété". Voyez-vous une solution?

    PS: quand je fais un alert du innerHTML de mon <TR> j'ai bien le code généré, et ce code est bon.

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    avril 2004
    Messages
    7 435
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 7 435
    Points : 10 525
    Points
    10 525
    Par défaut
    bonjour,


    tu peux nous montrer ton code ?

  3. #3
    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
    38 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    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 : 38 942
    Points : 65 315
    Points
    65 315
    Billets dans le blog
    1
    Par défaut
    c'est généralement le souci lorsque l'on ajoute dynamiquement des 'objets' en utilisant innerHTML ...

    Rien en vaut un bon vieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.createElement()
    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 !

    réalisations :www.oxygen-translations.fr|www.saftair.fr| www.ouestisol.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
    Humour

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : mars 2002
    Messages : 899
    Points : 1 100
    Points
    1 100
    Par défaut
    Citation Envoyé par Auteur
    bonjour,


    tu peux nous montrer ton code ?
    En voici une partie, (Je ne peux pas tout mettre car c'est mélangé avec du coldfusion, je mets l'essentiel).

    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
    <tr><td><select name="type_contenu" id="type_contenu" onchange="gererType(this.options[this.selectedIndex].value)"></td></tr>
    <tr id="swapRubriqueDossier"><td>&nbsp;</td></tr>
     
    <script language="javascript">
      var JSswapDossier = '<td><select name="dossier_id" id="dossier_id"><option value=""></option></select></td>';
      var JSswapRubrique = '<td><select name="rubrique_id" id="rubrique_id"><option value=""></option></select></td>'
     
      function gererType(typeContenu){
        if(typeContenu==17){
          document.getElementById('swapRubriqueDossier').innerHTML = JSswapDossier
        }else{
          document.getElementById('swapRubriqueDossier').innerHTML = JSswapRubrique
        }
      }
    </script>
    Dans la réalité, les selects contiennent bien sur beaucoup plus d'options. Mais le code çi-dessus fonctionne (sauf si je me suis trompé en l'épurant...).
    Par contre, voici celui qui ne fonctionne pas. C'est un controle sur mon onsubmit
    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
     
    <script language="javascript">
      function chkForm(f){
        var msg='';
        if(f.type_contenu.options[f.type_contenu.selectedIndex].value==17){
          if(f.rubrique_id.options[f.rubrique_id.selectedIndex].value==''){
            msg=msg+'\n - Une rubrique';
          }
        }else{
          if(f.dossier_id.options[f.dossier_id.selectedIndex].value==''){
            msg=msg+'\n - Un dossier auquel la page appartient';
          }
        }
      }
    </script>
    <form method="post" name="formul" action="page2.cfm" onsubmit="return chkForm(this);">
    à la fin il y a bien sur un traitement pour savoir si mon msg est vide. Par contre le code plante sur la ligne où il cherche à évaluer rubrique_id ou dossier_id, qui sont les deux listes crées auparavant par le javascript.

    Je suis partant pour essayer la solution de SpaceFrog
    Citation Envoyé par SpaceFrog
    c'est généralement le souci lorsque l'on ajoute dynamiquement des 'objets' en utilisant innerHTML ...

    Rien en vaut un bon vieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.createElement()
    Il faut juste que je puisse faire apparaitre et disparaitre mes select dossier_id et rubrique_id dynamiquement, autant de fois que je veux, puis les controler.

    Je ne connais pas cette fonction createElement(). Est-il possible d'avoir une brève explication (oui, je vais voir sur google tout de suite), et surtout, à quoi dois-je faire particulièrement attention pour mon exemple?

  5. #5
    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
    38 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    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 : 38 942
    Points : 65 315
    Points
    65 315
    Billets dans le blog
    1
    Par défaut
    regarde dans la FAQ comment créer des objets ou elements de form avec le DOM...

    puis comment les affciher ou les masque avec style.visibility ou style.display
    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 !

    réalisations :www.oxygen-translations.fr|www.saftair.fr| www.ouestisol.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
    Humour

  6. #6
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : mars 2002
    Messages : 899
    Points : 1 100
    Points
    1 100
    Par défaut
    Citation Envoyé par SpaceFrog
    regarde dans la FAQ comment créer des objets ou elements de form avec le DOM...

    puis comment les affciher ou les masque avec style.visibility ou style.display
    Si je ne peux que les afficher ou les masquer ça me pose un problème, car ma cellule de tableau reste apparente, même une fois vide. Il n'y a pas moyen de les supprimer directement du HTML?

  7. #7
    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
    38 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    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 : 38 942
    Points : 65 315
    Points
    65 315
    Billets dans le blog
    1
    Par défaut
    tu as une version visible en ligne ...

    supprimer une cellule du flux html peut poser des problèmes de structure du tableau il faut un même nombre de cellules par ligne ou modifier les colspan des autres cellules ...

    parcontre si tu n'as qu'une cellule par ligne ... joue sur le style.display du tr ...
    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 !

    réalisations :www.oxygen-translations.fr|www.saftair.fr| www.ouestisol.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
    Humour

  8. #8
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : mars 2002
    Messages : 899
    Points : 1 100
    Points
    1 100
    Par défaut
    Citation Envoyé par SpaceFrog
    tu as une version visible en ligne ...

    supprimer une cellule du flux html peut poser des problèmes de structure du tableau il faut un même nombre de cellules par ligne ou modifier les colspan des autres cellules ...

    parcontre si tu n'as qu'une cellule par ligne ... joue sur le style.display du tr ...
    Non, je n'ai pas de version visible en ligne, par contre, je te remercie pour le style.display, c'est ce qu'il me fallait (je m'obstinais avec le visibility:hidden, et ça ne faisait pas bien du tout car la place de la cellule restait vide). Je vais me débrouiller avec ça.

    Open your mind Bowen!!

    Merci encore.

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

Discussions similaires

  1. Tester du code html généré par javascript
    Par awalter1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 06/03/2012, 19h42
  2. [DOM] input Hidden généré par javascript et recup en php
    Par Acropole dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/03/2007, 17h31
  3. [Blend beta 1][VS Extension WPF CTP 11/06] VS ne lit pas le code généré par Blend
    Par FRED.G dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 09/12/2006, 17h50
  4. Code généré par JSF
    Par vny dans le forum JSF
    Réponses: 3
    Dernier message: 24/10/2006, 10h50
  5. Lancer la GUI à partir de code généré par VE
    Par Cedric507 dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 19/09/2006, 11h23

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