Puede parecer un poco desordenado, pero esa es la forma estándar de la eliminación de un elemento de su matriz. El elemento DOM en sí mismo puede existir por sí mismo, sin un parentNode
, por lo que tiene sentido que el método removeChild
esté en el elemento primario.
IMO un método genérico .remove()
en el nodo DOM en sí podría ser engañoso, después de todo, no estamos eliminando el elemento de la existencia, solo de su padre.
Sin embargo, siempre puedes crear tus propios envoltorios para esta funcionalidad. P.ej.
function removeElement(element) {
element && element.parentNode && element.parentNode.removeChild(element);
}
// Usage:
removeElement(document.getElementById('some_element'));
O bien, utilizar una biblioteca DOM como jQuery que proporciona un montón de contenedores para que, por ejemplo, en jQuery:
$('#some_element').remove();
Esta edición es en respuesta a su comentario, en el que se han consultado sobre la posibilidad de extender la aplicación nativa DOM. Esto se considera una mala práctica, entonces lo que hacemos es crear nuestros propios contenedores para contener los elementos y luego creamos los métodos que queramos. P.ej.
function CoolElement(element) {
this.element = element;
}
CoolElement.prototype = {
redify: function() {
this.element.style.color = 'red';
},
remove: function() {
if (this.element.parentNode) {
this.element.parentNode.removeChild(this.element);
}
}
};
// Usage:
var myElement = new CoolElement(document.getElementById('some_element'));
myElement.redify();
myElement.remove();
Esto es, en esencia, lo que hace jQuery, aunque es un poco más avanzado, ya que envuelve colecciones de nodos DOM en lugar de sólo un elemento individual como la de arriba.
+1, me gusta su método de eliminar elemento , pero conduce a una pregunta secundaria: ¿hay alguna manera de prototipos de métodos para los elementos DOM (que funciona en todas partes)? He intentado con 'HTMLElement.prototype' y el horrible' Object.prototype' pero ninguno funciona en todas partes ... – DaveRandom
Sí, hay formas de hacerlo funcionar, pero se considera una mala práctica. Es por eso que existen cosas como jQuery, para crear un objeto completamente separado que contenga elementos, a través del cual puede llamar a los métodos. También puede extender jQuery. Agregaré un EDITAR a mi respuesta. Dame un segundo :) – James
Estoy de acuerdo, dejando a un lado mi odio hacia las bibliotecas como jQ (mira el comentario en otra respuesta) todo lo que dices es verdad. – DaveRandom