
Zaz
Al eliminar un elemento con JavaScript estándar, primero debe ir a su padre:
var element = document.getElementById("element-id");
element.parentNode.removeChild(element);
Tener que ir primero al nodo principal me parece un poco extraño, ¿hay alguna razón por la que JavaScript funcione así?

johan dettmar
Sé que aumentar las funciones DOM nativas no siempre es la mejor solución o la más popular, pero funciona bien para los navegadores modernos.
Element.prototype.remove = function() {
this.parentElement.removeChild(this);
}
NodeList.prototype.remove = HTMLCollection.prototype.remove = function() {
for(var i = this.length - 1; i >= 0; i--) {
if(this[i] && this[i].parentElement) {
this[i].parentElement.removeChild(this[i]);
}
}
}
Y luego puedes eliminar elementos como este
document.getElementById("my-element").remove();
o
document.getElementsByClassName("my-elements").remove();
Nota: esta solución no funciona para IE 7 y versiones anteriores. Para obtener más información sobre cómo extender el DOM, lea esto artículo.
EDITAR: Revisando mi respuesta en 2019, node.remove()
ha venido al rescate y se puede usar de la siguiente manera (sin el polirelleno anterior):
document.getElementById("my-element").remove();
o
[...document.getElementsByClassName("my-elements")].map(n => n && n.remove());
Estas funciones están disponibles en todos los navegadores modernos (no en IE). Leer más sobre MDN.

usuario2192293
Navegador cruzado e IE >= 11:
document.getElementById("element-id").outerHTML = "";

xsznix
podrías hacer un remove
para que no tengas que pensar en ello cada vez:
function removeElement(id) {
var elem = document.getElementById(id);
return elem.parentNode.removeChild(elem);
}

Zaz
element.remove()
El DOM está organizado en un árbol de nodos, donde cada nodo tiene un valor, junto con una lista de referencias a sus nodos secundarios. Entonces element.parentNode.removeChild(element)
imita exactamente lo que está sucediendo internamente: primero va al nodo principal, luego elimina la referencia al nodo secundario.
A partir de DOM4, se proporciona una función auxiliar para hacer lo mismo: element.remove()
. Esta funciona en el 96% de los navegadores (a partir de 2020), pero no IE 11. Si necesita admitir navegadores más antiguos, puede:
- Eliminar elementos a través del nodo principal, como en la pregunta,
- modificar las funciones DOM nativas, como en la respuesta de Johan Dettmar, o
- utilizar una Relleno de poliéster DOM4.
Es lo que admite el DOM. Busque en esa página “eliminar” o “eliminar” y removeChild es el único que elimina un nodo.
Para eliminar un elemento:
var elem = document.getElementById("yourid");
elem.parentElement.removeChild(elem);
Para eliminar todos los elementos con, por ejemplo, un determinado nombre de clase:
var list = document.getElementsByClassName("yourclassname");
for(var i = list.length - 1; 0 <= i; i--)
if(list[i] && list[i].parentElement)
list[i].parentElement.removeChild(list[i]);

Sai Sunder
solo puedes usar element.remove()
Como dijo James, el DOM no admite la eliminación de un objeto directamente. Tienes que ir a su padre y eliminarlo de allí. Javascript no permitirá que un elemento se suicide, pero sí permite el infanticidio…
–Mark Henderson
1 de agosto de 2010 a las 23:36
¿Hay una razón? Richard Feynman dice que no. (Bueno, la justificación técnica es fácil de ver si ha escrito algún programa con estructura de árbol. El niño debe informar al padre de todos modos de lo contrario, la estructura de árbol puede romperse. Dado que debe hacerlo internamente de todos modos, si le proporcionó una función de una línea, es solo una función conveniente para usted que también puede definir usted mismo).
– kizzx2
9 de enero de 2012 a las 3:56
La única razón por la que veo es que siempre debe haber un elemento raíz en un documento xml/xhtml, por lo que no podrá eliminarlo porque no tiene un padre.
– Alex K.
16 de octubre de 2012 a las 8:38
Me gusta bastante la solución alternativa de Johan, y no estoy seguro de por qué esas funciones no se proporcionan de forma nativa. Como demuestra el número de espectadores, es una operación muy habitual.
– Zaz
12 de agosto de 2013 a las 13:36
Puedes usar
element.remove()
directamente a partir de ES5. ¡No necesitas a los padres!– Gibolt
13 de agosto de 2017 a las 5:14