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] Remplacer un objet DOM par du code HTML brut


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Par défaut [DOM] Remplacer un objet DOM par du code HTML brut
    Bonjour,

    J'ai un formulaire de gestion de commandes qui me permet de cliquer sur un des éléments dans la liste des items en commande pour modifier ses imformations (prix de vente, etc...). La fonction que j'appelle en Ajax pour faire la modification me retourne le code HTML modifié pour me permettre de réafficher l'item dans la liste. Je parcours alors ma liste afin de trouver l'item dont l'ID correspond puis je souhaite remplacer le DIV à cet endroit par le nouveau code HTML que j'ai reçu. J'avais pensé faire un truc de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var newDiv = document.createElement(xmlHttp.responseText);
    divDetail.replaceChild(oldDiv, newDiv);
    Bien entendu, createElement() n'est pas construite pour absorber un bout de code HTML et en faire un ou plusieurs objets DOM, j'ai donc le message d'erreur "Argument non valide" au niveau de l'appel à replaceChild(). J'aimerais savoir comment je devrait m'y prendre pôur remplacer mon objet DOM par mon nouveau code HTML. Est-ce possible d'ajouter du contenu en plein millieu du innerHTML de l'objet parent? Est-ce possible de créer un objet DOM à partir de code HTML alors que ce code HTML ressemble à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <div class="section_detail_ligne" id_pc="882"  type_item="0" id_item="10279" id_couleur="3" id_tissus="1">
    	<div class="section_detail" style="width:45px; text-align:center;">PR</div>
    	<div class="section_detail" style="width:500px; text-align:left;">BILL 1538-002-TC</div>
    	<div class="section_detail" style="width:174px; text-align:left;">Black</div>
    	<div class="section_detail" style="width:174px; text-align:left;">Custom Fabric</div>
    	<div class="section_detail" style="width:52px; text-align:center;">1</div>
    	<div class="section_detail" style="width:67px; text-align:right;">249,00 $</div>
    	<div class="section_detail" style="width:22px; text-align:right;"><img src="img/modifier.png" border="0" onclick="load_mod_form(this.parentNode.parentNode.id_pc)" style="cursor:pointer"></div>
    </div>

  2. #2
    Membre éclairé Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Par défaut
    Bon, j'ai réussi à régler une partie du problème. D'abord, l'utilisation de replaceChild() requiert que le premier paramètre soit l'objet qui remplacera le second. Je n'ai donc plus de message argument non valide.

    createElement() crée bien un objet DOM de type div avec tous les attributs qu'il comporte mais ne lui insère pas son contenu HTML, c'est à dire les autres objets DIV à l'intérieur. Existe-t-il un moyen de le faire sans démonter la chaîne de caractères avec des expressions régulières?

  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
    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
    oui enfin faire du createElement un fourre tout ...

    jette plutot un oeil là dessus
    http://www.developpez.net/forums/d53...ynamique-form/
    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 !

  4. #4
    Membre éclairé Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Par défaut
    Merci SpaceFrog pour ta réponse, on peut toujours se fier sur toi pour répondre à nos questions Javascript dans un délais raisonnable. Cependant je ne vois pas en quoi ta librairie pourrait me permettre de régler le problème de base.

    Je reçoit une chaîne de caractères qui représente du code HTML, ce code HTML représente un DIV qui contient 7 enfants aussi de type DIV, le 7e enfant contient un enfant de type IMG, les autres du texte. Je souhaiterais pouvoir passer cette chaîne dans un createElement() qui transformerait tout ça en "branche" à greffer à mon DOM Tree. Si cela m'est impossible, il me faudrait un moyen de supprimer mon objet DOM, puis d'aller insérer à sa place mon code HTML dans le innerHTML du parent... quelque chose de ce genre. Sinon je devrai m'amuser à tout démonter ma chaîne et monter récursivement ma "branche" DOM.

    Existerait-il déjà une fonction qui prends du code HTML et le démonte dans un tableau ou un objet? Logiquement, tant qu'à le faire cette fonction créerait un objet DOM... Si cela n'existe pas, peut-être le ferai-je.

  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
    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
    tu ne peux pas modifer ce que tu reçois en responsetext ?
    si oui il faut retourner un string formatté comme un hash
    ensuite un simple eval de ce hash et tu le passes ensuite en paramètre au createur d'objet ...
    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 !

  6. #6
    Membre éclairé Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Par défaut
    En fait le problème selon moi n'est pas là, le problème est que j'envoie plusieurs éléments d'un seul coup, à moins que je naie pas tout compris de ta librairie, il me faudra tout de même un hash par objet, et mon problème est justement que j'ai tous mes objets en une seule chaîne présentement et que je trouve pas à les décomposer en autant d'objets et à déterminer leur hiérarchie. Pour autant que je sache, responseText ne renvoie qu'une donnée à la fois alors soit je reçoit une donnée qui contient tout ou je dois effectuer plusieurs requêtes.

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

Discussions similaires

  1. Récupérer un objet DOM et l'ajouter dans une nouvelle page HTML
    Par aurelius_pr dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/05/2010, 16h31
  2. Réponses: 3
    Dernier message: 18/02/2008, 14h05
  3. [DOM] connaitre l'objet DOM appelant une fonction javascript
    Par HPmeteo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/09/2007, 18h03
  4. [DOM] Remplacer un arbre DOM par un autre
    Par kingmandrax dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 31/10/2006, 12h20
  5. [XSLT ]remplacement d un caractere par son code
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 02/09/2005, 16h26

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