Maison >interface Web >js tutoriel >Pourquoi la suppression des éléments JavaScript est-elle si compliquée et comment peut-elle être simplifiée ?
Simplification de la suppression d'éléments en JavaScript
La méthode JavaScript pour supprimer des éléments, qui consiste à trouver le nœud parent puis à supprimer manuellement l'élément, peut sembler lourd. Cela soulève la question : pourquoi JavaScript est-il conçu de cette manière ?
Bien qu'il puisse y avoir des raisons techniques, une solution consiste à augmenter les fonctions natives du DOM. Cette approche n'est pas idéale pour tous les cas, mais elle fonctionne bien dans les navigateurs modernes.
Méthode Polyfill
À l'aide du code suivant, vous pouvez étendre les prototypes Element et NodeList pour inclure une méthode de suppression :
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]); } } }
Avec cette extension, supprimer des éléments devient aussi simple comme :
document.getElementById("my-element").remove();
Ou :
document.getElementsByClassName("my-elements").remove();
Bien que cette solution fonctionne efficacement dans les navigateurs modernes, elle ne prend pas en charge Internet Explorer 7 et versions antérieures.
Solution de navigateur moderne
Heureusement, les navigateurs modernes (à l'exception d'IE) ont introduit le node.remove() fonction. Cette fonction permet de supprimer des éléments directement, sans avoir besoin du polyfill.
Pour utiliser node.remove() :
document.getElementById("my-element").remove();
Ou :
[...document.getElementsByClassName("my-elements")].map(n => n && n.remove());
Cette approche est prise en charge dans tous les principaux navigateurs, notamment Chrome, Firefox, Edge et Safari.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!