Soy un novato total. ¿Alguien puede decirme cómo eliminar un elemento HTML usando el Javascript original, no jQuery?
index.html
<html>
<head>
<script type="text/javascript" src="myscripts.js" > </script>
<style>
#dummy {
min-width: 200px;
min-height: 200px;
max-width: 200px;
max-height: 200px;
background-color: #fff000;
}
</style>
</head>
<body>
<div id="dummy"></div>
<form>
<input type="submit" value="Remove DUMMY" onclick="removeDummy(); "/>
</form>
</body>
myscripts.js
function removeDummy() {
var elem = document.getElementById('dummy');
elem.parentNode.removeChild(elem);
}
Lo que sucede cuando hago clic en el botón enviar, es que desaparecerá por un tiempo muy corto y luego volverá a aparecer inmediatamente. Quiero eliminar completamente el elemento cuando hago clic en el botón.
javascript
html
Codificador novato
fuente
fuente
Respuestas:
Lo que sucede es que el formulario se envía y, por lo tanto, la página se actualiza (con su contenido original). Estás manejando el
click
evento en un botón de enviar.Si desea eliminar el elemento y no enviar el formulario, maneje el
submit
evento en el formulario y regresefalse
de su controlador:HTML:
JavaScript:
Pero no necesita (o desea) un formulario para eso, no si su único propósito es eliminar el div ficticio. En lugar:
HTML:
JavaScript:
Sin embargo , ese estilo de configuración de controladores de eventos es anticuado. Parece tener buenos instintos en cuanto a que su código JavaScript está en su propio archivo y tal. El siguiente paso es ir más allá y evitar el uso de
onXYZ
atributos para conectar controladores de eventos. En cambio, en su JavaScript, puede conectarlos con la forma más nueva (alrededor del año 2000) en su lugar:HTML:
JavaScript:
... luego llame
pageInit();
desde unascript
etiqueta al final de su páginabody
(justo antes de la</body>
etiqueta de cierre ), o desde dentro delwindow
load
evento, aunque eso sucede muy tarde en el ciclo de carga de la página y, por lo tanto, generalmente no es bueno para conectar el evento handlers (sucede después de que todas las imágenes se hayan cargado finalmente, por ejemplo).Tenga en cuenta que he tenido que manipularlo para solucionar las diferencias del navegador. Probablemente querrá una función para conectar eventos para que no tenga que repetir esa lógica cada vez. O considere usar una biblioteca como jQuery , Prototype , YUI , Closure o cualquiera de varias otras para suavizar esas diferencias de navegador por usted. Es muy importante comprender las cosas subyacentes que están sucediendo, tanto en términos de los fundamentos de JavaScript como de DOM, pero las bibliotecas tratan con muchas inconsistencias y también proporcionan muchas utilidades útiles, como un medio para conectar controladores de eventos que se ocupan de diferencias del navegador. La mayoría de ellos también proporcionan una forma de configurar una función (como
pageInit
) para ejecutarse tan pronto como el DOM esté listo para ser manipulado, mucho antes de que sewindow
load
active.fuente
type="button"
o póngaloreturn false;
en su función JSonxyz
propiedad en el elemento) solo permite un solo controlador, y si asigna a la propiedad, reemplaza lo que solía estar allí, por lo que no funciona bien con otros. (continuación)Solo haz esto
element.remove();
Pruébelo aquí MIRAR
http://jsfiddle.net/4WGRP/
fuente
.remove()
Debe utilizar input type = "button" en lugar de input type = "enviar".
Pedido Mozilla Developer Center de HTML básico y los recursos de javascript
fuente
Tu JavaScript es correcto. Su botón tiene lo
type="submit"
que hace que la página se actualice.fuente
Vuelve a aparecer porque el botón de envío vuelve a cargar la página. La forma más sencilla de evitar este comportamiento es añadir una
return false
a laonclick
de este modo:fuente
Cambie el tipo de entrada a "botón". Como dijeron TJ y Pav, el formulario se está enviando. Su Javascript parece correcto, y lo felicito por probarlo de la manera que no es JQuery :)
fuente
index.html
myscripts.js
fuente
Ese es el código correcto. Lo que probablemente está sucediendo es que su formulario se está enviando y ve la nueva página (donde el elemento existirá nuevamente).
fuente
Intente ejecutar este código en su secuencia de comandos .
Y con suerte eliminará el elemento / botón.
fuente
Esto funciona. Simplemente quite el botón del "maniquí"
div
si quiere mantener el botón.fuente
Todavía soy un novato también, pero aquí hay una manera simple y fácil: puede usar externalHTML, que es la etiqueta completa, no solo una parte:
EX:
<tag id='me'>blahblahblah</tag>
's innerHtml seríablahblahblah
, y outerHTML sería todo el asunto,<tag id='me'>blahblahblah</tag>
.Entonces, por ejemplo, si desea eliminar la etiqueta, básicamente está eliminando sus datos, por lo que si cambia el HTML externo a una cadena vacía, es como eliminarlo.
En cambio, si simplemente no desea mostrarlo, puede diseñarlo en JS usando las propiedades de visibilidad, opacidad y visualización.
Tenga en cuenta que
opacity
hace que el elemento todavía se muestre, pero no puede verlo tanto. Además, puede seleccionar texto, copiar, pegar y hacer todo lo que podría hacer normalmente, aunque sea invisible.Visibility
se adapta más a su situación, pero dejará un espacio transparente en blanco tan grande como el elemento al que se aplicó.Le recomendaría que lo muestre, dependiendo de cómo cree su página web. Mostrar básicamente eliminando el elemento de su vista, pero aún puede verlo en DevTools. ¡Espero que esto ayude!
fuente