Oui oui je pense que c'est explicable... Il n'y a pas de suppression car l'instruction str = str.replace(sp[i].outerHTML, sp[i].innerHTML); ne fait plus son job, on tombe là sur un des inconvénients qu'il y a à travailler avec des string...
Alors pourquoi elle ne fait plus son job ? Regarde cette partie du code :
Tu vois en ajoutant l'attribut "back" tu modifies le outerHTML sans rafraichir la string "str" qui contient l'ancien outerHTML (c'est-à-dire sans l'attribut "back") donc quand tu fais : str = str.replace(sp[i].outerHTML, sp[i].innerHTML); il n'y a aucun remplacement qui s'effectue car le outerHtml qui est cherché est celui qui a été modifié et qui par conséquent ne se trouve pas dans la string "str"...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 var str = Nfont.innerHTML; var sp = Nfont.getElementsByTagName("FONT"); for (var i = 0; i < sp.length; i++) { if (sp[i].style.backgroundColor != "") { sp[i].setAttribute("back", sp[i].style.backgroundColor); } if (sp[i].getAttribute("style") != null) { str = str.replace(sp[i].outerHTML, sp[i].innerHTML); } } Nfont.innerHTML = str;
---> En plus il me semble qu'avec cette boucle for tu supprimes tous les formatages (sauf le backgroundColor) utilisant un "style" avec la balise <font>...
Partager