1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| /*****************************************************************
* Fonction récursive de suppression des noeuds texte dans un DOM *
* Synthaxe : deleteEmptyNodeText(noeudATraiter); *
*****************************************************************/
function deleteEmptyNodeText(pere, fils) {
if(typeof(fils) == 'undefined') { // Si le 2ème argument (fils) n'est pas renseigné -> 1ère boucle
fils = pere; // Le fils devient le père
pere = fils.parentNode; // Et le père devient le père du fils
deleteEmptyNodeText(pere, fils); // On lance la fonction avec les 2 bons arguments
} else {
if(fils.hasChildNodes()) { // Si le fils a des enfants
deleteEmptyNodeText(fils, fils.firstChild); // On le traite en tant que père avec son 1er enfants
}
if(fils.nextSibling) { // Si le fils a un frère
deleteEmptyNodeText(pere, fils.nextSibling); // On le traite en gardant le même père et son enfant suivant
}
if(fils.nodeType == 3 && (fils.nodeValue.replace(/^\s+|\s+$/g, '').length == 0 || fils.nodeValue.charCodeAt(1) == 32)) { // Si il s'agit d'un noeud texte vide
pere.removeChild(fils); // On le supprime
}
}
} |
Partager