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

  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>','');

  7. #7
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    mais que vous pouvez �tres compliqu�

    on a invent� le DOM c'est pour l'utiliser
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    for (div in document.getElementByTagName('DIV')) {
      if (div.className == 'merror') {
        div. parentNode.removeChild(div);
      }
    }
    c'est beaucoup moins compliqu� que de recr�er compl�tement la page
    car paser innerHTML �a revient � �a

    lecture du code HTML
    interpr�tation des tags sources
    impl�mentation du DOM
    extraction d'un nouveau code html (ce n'est pas le code source)
    application de la regexp et suppr�ssion de texte dans le code
    lecture du nouveau code source
    interpr�tation du nouveau code source
    suppression de tous les �l�ments du DOM
    impl�mentation du nouveau DOM

    alors qu'avec la m�thode qui utilise le dom on a
    lecture du code HTML
    interpr�tation des tags sources
    impl�mentation du DOM
    supression des �lements du dom qui sont des div avec la classe merror et leur enfants

    A+JYT

  8. #8
    Membre confirm�
    Inscrit en
    Mars 2008
    Messages
    80
    D�tails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Par d�faut
    Effectiement sekaijin, votre m�thode est beaucoup plus propre. Cependant je ne veux pas supprimer toutes les balises div "merror" mais uniquement celles qui contiennent un certain texte � afficher, ce qui fait que je suis oblig� de faire un test sur le contenu, d'o� le innerHTML.

    Cependant, mon code entra�ne une "Erreur sur la page" dans Internet Explorer 8 (MSIE 9 OK), j'obtiens ce message d'erreur :
    html parsing error unable to modify the parent container element before the child element is closed
    Avec un document.body.onload = function() {} , je parviens � �viter le probl�me dans MSIE 8. D�savantage : le message tant honni ;-) appara�t une seconde dans les navigateurs, et ne dispara�t pas dans MSIE 8 ???

  9. #9
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    cela signifie que le code html produit est faux

    A+JYT

  10. #10
    Membre confirm�
    Inscrit en
    Mars 2008
    Messages
    80
    D�tails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Par d�faut
    Bien s�r, mais pourquoi ne fonctionne-t-il pas sous MSIE 8 alors qu'il fonctionne sur MSIE 9 et � peu pr�s tous les autres navigateurs ?

  11. #11
    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 659
    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 659
    Billets dans le blog
    1
    Par d�faut
    IE9 => HTML5 les balises n'ont plus besoin d'�tre ferm�es ?
    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 !

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