Est-il possible de supprimer un élément dom qui n'a pas de parent autre que la balise body? Je sais que ce serait facile avec un cadre comme jquery, mais j'essaie de m'en tenir à du javascript simple.
Voici le code que j'ai trouvé pour le faire autrement:
function removeElement(parentDiv, childDiv){
if (childDiv == parentDiv) {
alert("The parent div cannot be removed.");
}
else if (document.getElementById(childDiv)) {
var child = document.getElementById(childDiv);
var parent = document.getElementById(parentDiv);
parent.removeChild(child);
}
else {
alert("Child div has already been removed or does not exist.");
return false;
}
}
Merci!
Vous devriez pouvoir obtenir le parent de l'élément, puis supprimer l'élément de celui-ci
function removeElement(el) {
el.parentNode.removeChild(el);
}
Mise à jour
Vous pouvez définir cela comme une nouvelle méthode sur le HTMLElement:
HTMLElement.prototype.remove = function() { this.parentNode.removeChild(this); return this; }
Et puis faites el.remove()
(qui retournera également l'élément)
childDiv.remove();
fonctionne dans Chrome 25.0.1364.155
Notez que cela ne fonctionne pas dans IE11 ou Opera Mini mais est pris en charge par tous les autres navigateurs.
Voir ici: référence à childnode-remove sur caniuse
Je pense que vous pouvez faire quelque chose comme ...
var child = document.getElementById(childDiv);
//var parent = document.getElementById(parentDiv);
child.parentNode.removeChild(child);
Voir node.parentNode pour plus d'informations à ce sujet.
document.body.removeChild(child);
Suppression d'un élément à l'aide de la propriété outerHTML
remElement(document.getElementById('title'));
remElement(document.getElementById('alpha'));
function remElement(obj) {
obj.outerHTML="";
}
Cette fonction pour simplement supprimer un élément en utilisant id:
function removeElement (id) {
document.getElementById(id).parentElement.removeChild(document.getElementById(id));
}
OK, vous n'avez pas besoin de connaître le parent pour supprimer un élément DOM de DOM, regardez le code ci-dessous, voyez comment est l'ordre de supprimer un élément de nœud en JavaScript:
Element
+ parentNode
+ removeChild(Element);
Comme vous le voyez, nous trouvons d'abord l'élément, puis en utilisant .parentNode, puis enlevez à nouveau l'enfant qui est l'élément, nous n'avons donc pas besoin de connaître le parent du tout!
Alors maintenant, regardez le vrai code:
var navigation = document.getElementById('navigation');
if(navigation) {
navigation.parentNode.removeChild(navigation);
}
ou en fonction
function removeNode(element) {
if(element) { //check if it's not null
element.parentNode.removeChild(element);
}
} //call it like : removeNode(document.getElementById('navigation'));
JQuery a également la fonction remove () qui est largement utilisée, comme:
$('#navigation').remove();
Il y a aussi une ChildNode.remove()
native qui n'est pas dans IE et les anciens navigateurs, mais vous pouvez le polyfill, regardez le polyfill suggéré depuis MDN:
Polyfill
Vous pouvez remplir la méthode remove () dans Internet Explorer 9 et versions ultérieures avec le code suivant:
//from:https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/remove()/remove().md
(function (arr) {
arr.forEach(function (item) {
if (item.hasOwnProperty('remove')) {
return;
}
Object.defineProperty(item, 'remove', {
configurable: true,
enumerable: true,
writable: true,
value: function remove() {
this.parentNode.removeChild(this);
}
});
});
})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
Si vous souhaitez en savoir plus, visitez ce lien sur MDN.