Slette element, bevare indhold
I http://www.eksperten.dk/spm/455956 fandt jeg frem til, hvordan man sletter et element, men bevarer indholdet:var ifor = 0, jfor = 0, tags, tmpnode, parnode;
tags=document.getElementsByTagName("mozjshlightex");
for (ifor = tags.length-1; ifor >= 0; ifor--) {
parnode = tags[ifor].parentNode;
for (jfor = 0; jfor < tags[ifor].childNodes.length; jfor++) {
tmpnode = tags[ifor].childNodes[jfor].cloneNode(true);
parnode.insertBefore(tmpnode, tags[ifor]);
}
parnode.removeChild(tags[ifor]);
}
Problemet er bare, at teksten i elementet der bliver slettet, bliver indsat i et/flere nye element(er) i parentNode.
Det ønsker jeg ikke, da det bookmarklet-highlight-script jeg skal bruge det i, ikke kan søge på tværs af elementer.
Hvordan gør jeg det, så elementet bliver slettet, men indholdet bevaret, mens elementets tekst-indhold ikke bliver oprette som et nyt element i parentNode?
Det er måske lidt tåget, derfor vil jeg prøve at illustrere det; jeg har f.eks. følgende struktur:
<div>
En masse tekst, og lidt til...<br />
Der kan stå meget...
<mozjshlightex style="background-color: green;">
<mozjshlightex style="background-color: yellow;">
Fremhævet
</mozjshlightex>
tekst...
</mozjshlightex>
</div>
Med min nuværende kode, vil det blive til:
<div>
En masse tekst, og lidt til...<br />
Der kan stå meget...
<>
<>
Fremhævet
</>
tekst...
</>
</div>
Som du kan se, er teksten stadigvæk i elementer :-(
Jeg vil have det sådan, efter scriptet:
<div>
En masse tekst, og lidt til...<br />
Der kan stå meget...
Fremhævet tekst...
</div>
Det skal virker i Mozilla (Firebird), IE er lige meget.
Jeg skal bruge det i http://www.eksperten.dk/artikler/16 :o)
På forhånd tak :o)
