Javascript - Eliminar contenido entre dos etiquetas HTML
Resuelto
sipherion
Mensajes publicados
1836
Fecha de registro
Estado
Miembro
Última intervención
-
sipherion Mensajes publicados 1836 Fecha de registro Estado Miembro Última intervención -
sipherion Mensajes publicados 1836 Fecha de registro Estado Miembro Última intervención -
Hola, hola !
Entonces, aquí está mi pequeño problema. A pesar de las magníficas explicaciones disponibles en CCM en esta dirección https://www.commentcamarche.net/contents/585-javascript-l-objet-regexp, no consigo hacer lo que quiero en Javascript.
Recupero en Javascript el contenido HTML de un DIV de mi página. En este DIV, tengo una <table></table> que no necesito recuperar ya que corresponde a la visualización de un calendario, y busco la forma de eliminarla.
Confieso que no tengo ningún conocimiento sobre expresiones regulares y como estoy en esto desde el viernes por la tarde, estoy completamente atascado.
Mi código actual que, por supuesto, no funciona:
El objetivo final es en Javascript tener algo como:
Gracias de antemano por la ayuda que puedan brindarme ;-)
--
Si su problema está resuelto, gracias por cerrar el tema haciendo clic en "Problema resuelto".
Administrador de redes en Windows Server 2003
Entonces, aquí está mi pequeño problema. A pesar de las magníficas explicaciones disponibles en CCM en esta dirección https://www.commentcamarche.net/contents/585-javascript-l-objet-regexp, no consigo hacer lo que quiero en Javascript.
Recupero en Javascript el contenido HTML de un DIV de mi página. En este DIV, tengo una <table></table> que no necesito recuperar ya que corresponde a la visualización de un calendario, y busco la forma de eliminarla.
Confieso que no tengo ningún conocimiento sobre expresiones regulares y como estoy en esto desde el viernes por la tarde, estoy completamente atascado.
Mi código actual que, por supuesto, no funciona:
^[(<TABLE)].*(TABLE>)$
El objetivo final es en Javascript tener algo como:
reg = new RegExp("^[(<TABLE)].*(TABLE>)$");
document.form.message_bdd.value = document.form.message_bdd.value.replace(reg, ''); Gracias de antemano por la ayuda que puedan brindarme ;-)
--
Si su problema está resuelto, gracias por cerrar el tema haciendo clic en "Problema resuelto".
Administrador de redes en Windows Server 2003
4 respuestas
Hola sipherion,
Puedes usar una regex en el método String replace().
Algo como esto:
Dal
Puedes usar una regex en el método String replace().
Algo como esto:
<!DOCTYPE html>
<html>
<body>
<div id="demo">
<p>Haz clic en el botón para borrar la tabla</p>
<table border="1">
<tr>
<th>Lunes</th>
<th>Martes</th>
</tr>
<tr>
<td>Reservado</td>
<td>Reservado también</td>
</tr>
</table>
</div>
<button onclick="myFunction()">Borrar</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
Mensajes publicados
28364
Fecha de registro
Estado
Colaborador
Última intervención
Ambassadeur
6 597
1° elimina el código HTML y las 2 etiquetas TAB y prueba en el navegador para ver si funciona bien sin estas etiquetas.
2° En este lugar inserta tu código javascript asegurándote de incluir bien las etiquetas JS..
Puedes hacer esto con una herramienta de ayuda como DreamWeaver o simplemente con el Bloc de notas.
Si necesitas soporte de JS, puedes consultar: http://www.editeurjavascript.com/cours/cours_02.php
No es muy complicado, pero no puedo hacer tu código por ti.
2° En este lugar inserta tu código javascript asegurándote de incluir bien las etiquetas JS..
Puedes hacer esto con una herramienta de ayuda como DreamWeaver o simplemente con el Bloc de notas.
Si necesitas soporte de JS, puedes consultar: http://www.editeurjavascript.com/cours/cours_02.php
No es muy complicado, pero no puedo hacer tu código por ti.
No entiendo tu respuesta, Jeannets. ¿Crees que no tengo ningún conocimiento en programación? Lo siento si eso es lo que pensaste al leer mi mensaje, tal vez me expresé mal, pero estoy bien, me las arreglo igualmente ^^
Mi problema viene de la función RegExp. Quiero reemplazar el contenido de una variable JS que declaro recuperando el innerHTML de un DIV eliminando todo lo que está entre <table y </table>.
--
Si tu problema está resuelto, gracias por cerrar el tema haciendo clic en "Problema resuelto".
Administrador de redes en Windows Server 2003
Mi problema viene de la función RegExp. Quiero reemplazar el contenido de una variable JS que declaro recuperando el innerHTML de un DIV eliminando todo lo que está entre <table y </table>.
--
Si tu problema está resuelto, gracias por cerrar el tema haciendo clic en "Problema resuelto".
Administrador de redes en Windows Server 2003
Pregunta probablemente tonta, pero ¿por qué no utilizar jQuery en lugar de complicarse con una expresión regular?
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
function myFunction()
{
$('#demo table').html('');
}
</script>
- En mi caso, el ID depende de una selección previa; de hecho, el ID se recupera a través de una variable definida por
- Esta solución solo funciona con una tabla, mientras que en esta DIV hay dos.
- Puede suceder en ciertos casos que se necesite modificar nuestra selección sin recargar la página; si eliminas el código HTML, la tabla ya no se mostrará. Por lo tanto, hay que eliminarlo en la variable temporal antes de enviarlo a la página de procesamiento.
Pero, por lo demás, funciona muy bien, he probado tu solución, me será útil en ciertos casos ;-)
document.form.idDivTemp.value(lo que da
document.form.message_bdd.value = document.getElementById(document.form.idDivTemp.value).innerHTML;)
- Esta solución solo funciona con una tabla, mientras que en esta DIV hay dos.
- Puede suceder en ciertos casos que se necesite modificar nuestra selección sin recargar la página; si eliminas el código HTML, la tabla ya no se mostrará. Por lo tanto, hay que eliminarlo en la variable temporal antes de enviarlo a la página de procesamiento.
Pero, por lo demás, funciona muy bien, he probado tu solución, me será útil en ciertos casos ;-)
El selector jQuery puede ser construido como mejor te parezca para manipular cualquier elemento del DOM, para eliminarlo, ocultarlo, o añadirle cualquier cosa.
Mi ejemplo se basó simplemente en la respuesta de [Dal], pero afortunadamente, se pueden hacer muchas otras cosas, y en mi opinión, es más práctico de manipular que una expresión regular.
Mi ejemplo se basó simplemente en la respuesta de [Dal], pero afortunadamente, se pueden hacer muchas otras cosas, y en mi opinión, es más práctico de manipular que una expresión regular.
La regex coincidirá con varias tablas, si tienes varias en tu div, porque la regex irá hasta el último "/table>”. Si eso no es un problema en tu caso, está bien, de lo contrario, tendrás que hacer que coincida un poco más (¿tiene un id esta "table"?), o usar un especificador "?" como este en su lugar, para que la regexp sea no codiciosa (non-greedy) y coincida solo con la primera tabla (si es la que buscas).
Dal
En el peor de los casos, en el futuro, ¿podría usar algo como para identificar claramente una tabla?
¿por qué molestarse con una expresión regular cuando jQuery permite manipular fácilmente cualquier elemento de la página y los elementos que contiene?
jQuery está bien, pero si no lo usa ya, crea una dependencia. Cuando usamos jQuery, tendemos a deformarnos y olvidar que (o no nos tomamos la molestia de preguntarnos si) podemos hacer las cosas bastante simplemente sin él.
No dijo que su tabla tuviera un id o una clase. Supuse que el div la tenía (porque dice que recupera su contenido).
Su principal objetivo era eliminar la tabla recuperada en una variable de javascript, no eliminarla en la página mostrada (para los fines de la demo, eso es lo que hace mi código para mostrar el resultado de la sustitución en la variable, pero es solo con fines de ilustración del resultado).
@sipherion : en ese caso
Dal
Edit : falta una barra de cierre