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 :

Supprimer des noeuds


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Points : 59
    Points
    59
    Par défaut Supprimer des noeuds
    Bonjour,

    J'aimerais supprimer les noeuds ayant pour tag "script" et attribut class="script"

    Par exemple, je voudrais supprimer tout le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <script type="text/javascript" class="script">
    function();
    </script>
    Pour cela, j'ai créé la fonction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function suppression_element()
    {
    	//Get the node to delete
    	var nodeToDelete = document.getElementsByTagName("script");
    	//If this node exists then delete it
    	for (i = 0 ; i < nodeToDelete.length ; i++)
    	{
    		if (nodeToDelete[i].getAttribute('class') == "script")
    		{
    			nodeToDelete[i].parentNode.removeChild(nodeToDelete[i]);
    		}
    	}
    }
    Sur IE ça ne marche pas du tout. Et sur Firefox, si j'ai plusieurs éléments à supprimer , il sort de la boucle for après la première suppression.

    Je n'ai pas d' énormes connaissances en JavaScript, si vous pouviez m'aider je vous serais reconnaissant.

    En outre, si vous vous demandez pourquoi je veux supprimer les noeuds ayant pour tag "script" c'est parce que, en faite, j'ai un cgi qui tourne sur Apache. Ce cgi crée la page web vu depuis le navigateur. Mon cgi tourne en continue, cad en continue il envoie des données. Ces données sont le code JavaScript à exécuter par le navigateur. Ainsi j'ai peur que le code source devient énorme et qu'il prenne beaucoup de mémoire. Je me trompe ?

  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 644
    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 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    quand tu supprimes un noeud le length change
    il faut donc toujours commencer par le dernier ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while (nodeToDelete.length>0)
    	{
    		if (nodeToDelete[nodeToDelete.length-1].className == "script")
    		{
    			nodeToDelete[nodeToDelete.length-1].parentNode.removeChild(nodeToDelete[nodeToDelete.length-1]);
    		}
    	}

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Points : 59
    Points
    59
    Par défaut Résolu
    Merci beaucoup!

    En effet,il faut commencer par la fin. Et en utilisant className au lieu de .getAttribute('class'), ça fonctionne sur IE également.

    Voici le code final:

    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
    18
    19
    20
    21
    22
     
    function timer()
    {
    	objectSetTimeout = setTimeout("deleteCode()", 300000);
    }
     
    function deleteCode()
    {
    	//Get the node to delete
    	var nodeToDelete = document.getElementsByTagName("script");
    	//If this node exists then delete it
    	for (i = nodeToDelete.length - 1 ; i >= 0  ; i--)
    	{ 
    		if (nodeToDelete[i].className == "script")
    		{
    			nodeToDelete[i].parentNode.removeChild(nodeToDelete[i]);
    			nodeToDelete[i] = null;
    		}
    	}
     
    	timer();
    }
    Avec un timer, tous les 5 min j'effectue la suppression.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Points : 59
    Points
    59
    Par défaut Résolu mais pas parfaitement..
    J'ai un petit souci.
    La suppression que je désire s'effectue correctement, mais pour chaque suppression, un retour à la ligne est inseré.

    Ainsi est-il possible d'éviter ceci?
    Merci.

  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 644
    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 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    regarde dans le code généré quel est le type de Noeud qui te fait un retour ligne et vire le de la même façon ...

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

Discussions similaires

  1. Pbs pour Glisser-Deplacer des noeuds dans un TreeView.
    Par psau dans le forum C++Builder
    Réponses: 3
    Dernier message: 08/09/2004, 22h02
  2. Réponses: 2
    Dernier message: 12/01/2004, 14h56
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 11h06
  4. [JTree] Ouvrir/Fermer l'ensemble des noeuds
    Par Math_Caen dans le forum Composants
    Réponses: 3
    Dernier message: 07/04/2003, 15h01
  5. Couleur des noeuds ds 1 TTreeView
    Par vincent DD dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/09/2002, 14h54

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