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 :

Suppression d'une balise et de son contenu


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Par défaut Suppression d'une balise et de son contenu
    Bonjour,

    J'ai des difficultés à supprimer une balise dans une page html. Voici l'extrait html :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div id="initialmsgs">
    <div class="confirm">Soumission :  paper #37.  Vous recevrez un courriel losque les évaluations seront prêtes.  Les mises à jours sont acceptées jusqu'au : Tuesday 20 Aug 2013 9:59:59am CEST<span class='usertime' id='usertime1' style='display:none'></span>.<br><em>Database error</em> ce type d'erreur est à ignorer, merci de ne pas en tenir compte. Seule compte votre confirmation envoyée par courriel.</div>
    <div class="merror"><p>Database error while performing search (create temporary table PaperMatches_0 select Paper.paperId paperId from Paper where true group by Paper.paperId): Access denied for user 'aref2013'@'' to database 'aref2013'</p></div>
    <div class="merror"><p>Database error while performing search (create temporary table PaperMatches_1 select Paper.paperId paperId from Paper where true group by Paper.paperId): Access denied for user 'aref2013'@'' to database 'aref2013'</p></div>
    </div>
    </div>
    Ce que je veux, c'est supprimer la ligne de la classe merror en raison du contenu (et non pas n'importe quelle classe merror). Voici mon essai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    e="<div class=\"merror\"><p>Database error while performing search \\(create temporary table PaperMatches_1 select Paper.paperId paperId from Paper where true group by Paper.paperId\\): Access denied for user \\'aref2013\\'@\\'\\' to database \\'aref2013\\'</p></div>";
    doc=document.body.innerHTML;
    while ( doc.match(e) != '') {
        document.body.innerHTML=document.body.innerHTML.replace(/<div class=\\"merror\\"><p>Database error while performing search \\(create temporary table PaperMatches_1 select Paper.paperId paperId from Paper where true group by Paper.paperId\\): Access denied for user 'aref2013'@'' to database 'aref2013'<\\/p><\\/div>/,'');
     
    }
    alert(doc.match(e));
    Le script échoue (erreur d'expression régulière), en effet je ne suis pas sûr de la syntaxe ???

    Merci de l'aide,
    Thibaud.

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    salut

    mettons que ton extrait html soit fixe, choppe le div que tu veux supprimer par l'arbre dom:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var d=document.getElementById("initialmsgs");
    d.removeChild(d.getElementsBytagName("div")[2]);

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Par défaut
    Bonne idée, mais mon html n'est pas fixe... voici un exemple de balise semblable que je ne veux pas enlever :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div id="initialmsgs">
    <div class="merror">Before submitting your paper, you must enter values for the Title, Authors, and Abstract fields.  Fix the highlighted fields and try again.</div>
    </div>

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    alors il va falloir exposer ton problème de manière plus précise... désolé, pour l'instant;

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Par défaut
    Désolé si je n'ai pas été assez clair. Voici un exemple ci-dessous. J'ai trois messages dans des boîtes appartenant à la même classe merror, mais je ne veux supprimer que le message de type database (il peut y en avoir plusieurs). Si je supprime la classe je supprime aussi le message utile, et si je supprime le message je conserve une boîte css vide : il me faut donc supprimer la ligne complète avec un innerHTML dans une boucle while jusqu'à ce que les messages indésirables n'apparaissent plus. Je fais un test avec match et je supprime la ligne avec replace. Cependant ma syntaxe n'est pas bonne (regexp), je ne parviens pas à supprimer la ligne en question. Voici la ligne à supprimer :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <div class="merror"><p>Database error while performing search (create temporary table PaperMatches_0 select Paper.paperId paperId from Paper where true group by Paper.paperId): Access denied for user 'aref2013'@'' to database 'aref2013'</p></div>

    Et voici mon exemple :

    Code html : 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    <title>Test</title>
    <style>
    .merror{
      width:800px;
      margin:auto;
      padding:10px;
      background-color:#FFFF00;
      border-left:1px solid #000000;
      border-right:1px solid #000000;
      border-bottom:1px solid #000000;
      border-top:1px solid #000000;
    }
    </style>
    </head>
    <body>
     
    <!-- Suprression des messages Database, pas l'autre -->
    <SCRIPT language="Javascript"> 
    e="<div class=\"merror\"><p>Database error while performing search \\(create temporary table PaperMatches_1 select Paper.paperId paperId from Paper where true group by Paper.paperId\\): Access denied for user \\'aref2013\\'@\\'\\' to database \\'aref2013\\'</p></div>";
    doc=document.body.innerHTML;
    while ( doc.match(e) != '') {
        document.body.innerHTML=document.body.innerHTML.replace(/<div class=\\"merror\\"><p>Database error while performing search \\(create temporary table PaperMatches_1 select Paper.paperId paperId from Paper where true group by Paper.paperId\\): Access denied for user 'aref2013'@'' to database 'aref2013'<\\/p><\\/div>/,'');
     
    }
    alert(doc.match(e));
    </SCRIPT>
     
     
    <div id="initialmsgs">
    	<div class="merror">It looks like you tried to upload a gigantic file, larger than I can accept. Any changes were lost.</div>
    	<div class="merror"><p>Database error while performing search (create temporary table PaperMatches_0 select Paper.paperId paperId from Paper where true group by Paper.paperId): Access denied for user 'aref2013'@'' to database 'aref2013'</p></div>
    	<div class="merror"><p>Database error while performing search (create temporary table PaperMatches_0 select Paper.paperId paperId from Paper where true group by Paper.paperId): Access denied for user 'aref2013'@'' to database 'aref2013'</p></div>
    </div>
    </div>
    </body>
    </html>

    Est-ce que c'est plus clair ainsi ?
    Merci à toi

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Par défaut
    Cette syntaxe semble être la bonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.body.innerHTML=document.body.innerHTML.replace('<div class=\"merror\"><p>Database error while performing search (create temporary table PaperMatches_0 select Paper.paperId paperId from Paper where true group by Paper.paperId): Access denied for user \'aref2013\'@\'\' to database \'aref2013\'</p></div>','');

Discussions similaires

  1. [SimpleXML] Afficher le contenu d'une balise définie par son attribut
    Par souffle56 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/02/2010, 20h43
  2. [RegEx] supprimer une balise html avec son contenu
    Par waldoun dans le forum Langage
    Réponses: 7
    Dernier message: 06/02/2008, 11h19
  3. Réponses: 3
    Dernier message: 10/08/2007, 13h45
  4. Remplir une matrice et afficher son contenu
    Par annoussa dans le forum Pascal
    Réponses: 2
    Dernier message: 08/11/2006, 11h48
  5. Réponses: 7
    Dernier message: 17/09/2005, 23h38

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