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 :

détruire (récursivement) des objets créés dynamiquement


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut détruire (récursivement) des objets créés dynamiquement
    Bonjour,

    Voilà, j'ai un script qui génère des div (voir d'autre objets) qui apparaissent les une par dessus les autres, et ce de façon dynamique.

    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
    div1 = document.createElement('div');
    // ... spécification de proprietees pour div1 ...
    window.document.body.appendChild(div1);
     
    div2 = document.createElement('div');
    // ... spécification de proprietees pour div2 ...
    div1.appendChild(div2);
     
    div3 = document.createElement('div');
    // ... spécification de proprietees pour div3 ...
    div2.appendChild(div3);
     
    div4 = document.createElement('div');
    // ... spécification de proprietees pour div4 ...
    div3.appendChild(div4);
     
    // etc...
    Supposons maintenant que j'ai un bouton situé dans DIV4, et qu'en cliquant dessus, je veuille détruire tout ce qui se trouve (visuellement) au dessus de DIV2 inclus (donc DIV2, DIV3, DIV4 et tout ce qui vient après si y'en a d'autre)

    Un 1er test avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    div1.remocechild(div2);
    ne fait disparaitre a mon grand étonnement que DIV2, et du coup, il reste DIV3 et DIV4 a l'écran... A quoi est donc maintenant lié DIV3 du coup ?

    Dans l'absolue, je pourrais ne pas me poser de question écrire une fonction qui parcours récursivement l'arbres des enfants pour faire un removechild sur chacun d'eux, mais je ne comprend pas pourquoi ça n'a pas marché avec un simple removechild sur le parent. Ca ne devrait pas le déréférencer, et par voie de fait tous ses enfants avec ?

    Existe t-il donc une solution plus élégante qu'une fonction récursive pour effacer un éléments et tous ses enfants ?

    En vour remerciant !

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 983
    Points : 44 173
    Points
    44 173
    Par défaut
    Bonsoir,
    div1.remocechild(div2);
    ce sera plutôt div1.removeChild(div2); .

    ne fait disparaitre a mon grand étonnement que DIV2, et du coup, il reste DIV3 et DIV4
    pas avec ce que tu montres, le removeChild supprime bien l'élément et tous ces enfants.

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    Oui, il fallait bien lire removeChild. J'ai rédigé l'exemple directement dans la balise code, le code original étant bien trop velu pour être collé ici tel quel sans filer une migraine et l'envie de fuir à l'éventuel contributeur qui voudrait m'aider.

    Bref, après avoir tourner en rond pendant 1h et grâce à ta confirmation, j'ai remonté mon code un peu plus loin en amont pour me rendre compte qu'effectivement, le DIV2 n'était pas un enfant de DIV1 mais du parent de DIV1...

    Une erreur bête dans mon code, une bonne heure de perdue et une question aussi pertinente qu'une réflexion sur le chômage dans un discours de François Hollande posée sur ce forum.

    Merci et désolé pour ce "raté".

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

Discussions similaires

  1. Ajouter des Listener sur des objets créés dynamiquement
    Par floctc dans le forum Composants
    Réponses: 10
    Dernier message: 23/04/2010, 16h35
  2. Réponses: 2
    Dernier message: 27/10/2008, 13h50
  3. Réponses: 9
    Dernier message: 31/05/2006, 11h56
  4. problème d'accès a des éléments créés dynamiquement
    Par Pymm dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/07/2005, 17h13
  5. Erreur EACCESSVIOLATION avec des compsts créés dynamiquement
    Par tsikpemoise dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/02/2004, 19h05

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