Javascript - Supprimer contenu entre deux balises HTML
Résolu
sipherion
Messages postés
1809
Date d'inscription
Statut
Membre
Dernière intervention
-
sipherion Messages postés 1809 Date d'inscription Statut Membre Dernière intervention -
sipherion Messages postés 1809 Date d'inscription Statut Membre Dernière intervention -
Bonjour bonjour !
Alors voilà mon petit problème. Malgré les superbes explications disponibles sur CCM à cette adresse https://www.commentcamarche.net/contents/585-javascript-l-objet-regexp je ne parviens pas à faire ce que je veux en Javascript.
Je récupère en Javascript le contenu HTML d'une DIV de ma page. Dans cette DIV, j'ai un <table></table> qu'il m'est inutile de récupérer puisqu'il correspond à l'affichage d'un calendrier, et je cherche le moyen de la supprimer.
J'avoue n'avoir aucune connaissance en expressions régulières et comme je suis dessus depuis vendredi après midi, je sèche complètement.
Mon code actuel qui bien sur, ne fonctionne pas :
Le but final étant en Javascript d'avoir quelque chose du genre :
Merci d'avance pour l'aide que vous pourrez m'apporter ;-)
Alors voilà mon petit problème. Malgré les superbes explications disponibles sur CCM à cette adresse https://www.commentcamarche.net/contents/585-javascript-l-objet-regexp je ne parviens pas à faire ce que je veux en Javascript.
Je récupère en Javascript le contenu HTML d'une DIV de ma page. Dans cette DIV, j'ai un <table></table> qu'il m'est inutile de récupérer puisqu'il correspond à l'affichage d'un calendrier, et je cherche le moyen de la supprimer.
J'avoue n'avoir aucune connaissance en expressions régulières et comme je suis dessus depuis vendredi après midi, je sèche complètement.
Mon code actuel qui bien sur, ne fonctionne pas :
^[(<TABLE)].*(TABLE>)$
Le but final étant en Javascript d'avoir quelque chose du genre :
reg = new RegExp("^[(<TABLE)].*(TABLE>)$");
document.form.message_bdd.value = document.form.message_bdd.value.replace(reg, '');
Merci d'avance pour l'aide que vous pourrez m'apporter ;-)
A voir également:
- Javascript - Supprimer contenu entre deux balises HTML
- Supprimer rond bleu whatsapp - Guide
- Supprimer une page word - Guide
- Nombre de jours entre deux dates excel - Guide
- Fusionner deux cellules excel en gardant le contenu - Guide
- Supprimer pub youtube - Accueil - Streaming
4 réponses
Salut sipherion,
Tu peux utiliser une regex dans la méthode String replace().
Quelque chose comme cela :
Dal
Tu peux utiliser une regex dans la méthode String replace().
Quelque chose comme cela :
<!DOCTYPE html>
<html>
<body>
<div id="demo">
<p>Cliquez sur le bouton pour effacer le tableau</p>
<table border="1">
<tr>
<th>Lundi</th>
<th>Mardi</th>
</tr>
<tr>
<td>Booké</td>
<td>Booké aussi</td>
</tr>
</table>
</div>
<button onclick="myFunction()">Effacer</button>
<script>
function myFunction()
{
var str=document.getElementById("demo").innerHTML;
var n=str.replace(/<table[\s\S]*\/table>/,"");
document.getElementById("demo").innerHTML=n;
}
</script>
</body>
</html>
Dal
jeannets
Messages postés
28223
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
5 982
1° tu supprime le code HTML et les 2 Balises TAB et tu essaie dans le navigateur de voir si ça fonctionne bien sans ces balises.
2° A cet endroit tu insert ton code javascript en mettant bien les balises JS..
Tu peux faire ça avec un outil d'aide comme DreamWeaver ou tout simplement avec Bloc-Note.
Si tu as besoin de support JS, tu peux consulter: http://www.editeurjavascript.com/cours/cours_02.php
Ce n'est pas bien compliqué, mais je ne peux pas faire ton code à ta place.
2° A cet endroit tu insert ton code javascript en mettant bien les balises JS..
Tu peux faire ça avec un outil d'aide comme DreamWeaver ou tout simplement avec Bloc-Note.
Si tu as besoin de support JS, tu peux consulter: http://www.editeurjavascript.com/cours/cours_02.php
Ce n'est pas bien compliqué, mais je ne peux pas faire ton code à ta place.
Je ne comprends pas ta réponse jeannets. Tu crois que je n'ai aucune connaissance en programmation ? Désolé si c'est ce que tu as cru en lisant mon message, je me suis peut être mal exprimé, mais ça va, je me débrouille quand même ^^
Mon problème vient de la fonction RegExp ! Je voudrais remplacer le contenu d'une variable JS que je déclare en récupérant le innerHTML d'une DIV en supprimant tout ce qui est entre <table et </table>.
Mon problème vient de la fonction RegExp ! Je voudrais remplacer le contenu d'une variable JS que je déclare en récupérant le innerHTML d'une DIV en supprimant tout ce qui est entre <table et </table>.
Question probablement bête, mais pourquoi ne pas utiliser le jQuery au lieu de s'embêter avec un regex ?
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
function myFunction()
{
$('#demo table').html('');
}
</script>
- Dans mon cas, l'ID dépend d'une sélection précédente ; en fait, l'ID est récupéré via une variable définie par
- Cette solution ne fonctionne qu'avec un tableau alors que dans cette DIV il y en a deux.
- Il peut arriver dans certains cas qu'il faille modifier notre sélection sans recharger la page, si tu supprimes le code HTML le tableau ne s'affiche plus. Il faut donc le supprimer dans la variable temporaire avant son envoi à la page de traitement.
Mais sinon ça fonctionne très bien, j'ai testé ta solution, elle me sera utile dans certains cas ;-)
document.form.idDivTemp.value(ce qui donne un
document.form.message_bdd.value = document.getElementById(document.form.idDivTemp.value).innerHTML;)
- Cette solution ne fonctionne qu'avec un tableau alors que dans cette DIV il y en a deux.
- Il peut arriver dans certains cas qu'il faille modifier notre sélection sans recharger la page, si tu supprimes le code HTML le tableau ne s'affiche plus. Il faut donc le supprimer dans la variable temporaire avant son envoi à la page de traitement.
Mais sinon ça fonctionne très bien, j'ai testé ta solution, elle me sera utile dans certains cas ;-)
Le sélecteur jQuery peut être construit comme bon te semble pour manipuler n'importe quel élément du dom, pour le supprimer, le cacher, y ajouter n'importe quoi.
Mon exemple était simplement basé sur la réponse de [Dal], mais heureusement, on peut faire bien d'autres choses, et à mon sens c'est plus pratique à manipuler qu'un regex.
Mon exemple était simplement basé sur la réponse de [Dal], mais heureusement, on peut faire bien d'autres choses, et à mon sens c'est plus pratique à manipuler qu'un regex.
La regex va matcher plusieurs tableaux, si tu en as plusieurs dans ton div, car la regex ira jusqu'au dernier "/table>". Si cela n'est pas gênant dans ton cas, c'est bien, sinon il faudra matcher un peu plus (elle a un id cette "table" ?), ou alors utiliser un spécificateur "?" comme cela à la place, pour que la regexp soit non gourmande (non-greedy) et matche juste le premier tableau (si c'est bien celui que tu vises).
Dal
Au pire à l'avenir, est ce que je pourrais utiliser quelque chose du genre pour identifier une table clairement ?
pourquoi vous embêter avec un regex alors que le jQuery permet de manipuler facilement n'importe quel élément de la page et les éléments qu'il contient ?
jQuery est bien, mais s'il ne l'utilise pas déjà cela crée une dépendance. Quand on fait du jQuery, on a tendance à être déformé et oublier que (ou on ne prend pas la peine de se demander si) l'on peut faire assez simplement les choses sans.
Il n'a pas dit que son tableau avait un id ou une classe. J'ai supposé que le div en a (car il dit qu'il en récupère le contenu).
Son but premier était de supprimer le tableau récupéré dans une variable javascript, pas de le supprimer dans la page affichée (pour les besoins de la démo, c'est ce que fait mon code pour afficher le résultat de la substitution dans la variable, mais c'est juste à des fins d'illustration du résultat).
@sipherion : dans ce cas
Dal
Edit : slash fermant manquant