ik ben bezig om in javascript een functie te schrijven die als invoer html pakt en als uitvoer een dom-object teruggeeft. Ik heb het script zover werkend dat bijna alles goed gaat. Het enige wat nog een probleem is zijn geneste gelijknamige tags. Ik wil het proces als volgt inrichten: de firstpass pak ik alle root-items, 2e ronde sub-items... etc tot ze geweest zijn. Hoe en wat doet er niet veel toe, ik probeer een replace op te stellen die de volgende html transformeert:
Probleem is, is dat de volgende invoer:
Zodra dit namelijk eenmaal gebeurt is dan kan ik de string splitsen zodat elk element 1 (root) tag bevat. Bij het doornemen van alle elementen stuur ik vervolgens de functie weer aan met alle html binnen het element. Op die manier verwerk ik dus alle html in de invoer.
Punt is is dat je het volgens mij niet met 1 replace kunt opvangen. Zoals je ziet moet deze namelijk alleen de root-tags gaan vervangen en sub-tags ongemoeid laten.
Ik heb bijvoorbeeld de volgende js:
code:
Wat moet worden:1
2
3
| <div>
<div>tekst</div>
</div> |
code:
1
2
3
| <div.1>
<div>tekst</div>
</div.1> |
Probleem is, is dat de volgende invoer:
code:
Dit moet namelijk vervangen worden door:1
2
3
4
5
6
| <div>
<div></div>
</div>
<div>
<div></div>
</div> |
code:
1
2
3
4
5
6
| <div.1>
<div></div>
</div.1>
<div.1>
<div></div>
</div.1> |
Zodra dit namelijk eenmaal gebeurt is dan kan ik de string splitsen zodat elk element 1 (root) tag bevat. Bij het doornemen van alle elementen stuur ik vervolgens de functie weer aan met alle html binnen het element. Op die manier verwerk ik dus alle html in de invoer.
Punt is is dat je het volgens mij niet met 1 replace kunt opvangen. Zoals je ziet moet deze namelijk alleen de root-tags gaan vervangen en sub-tags ongemoeid laten.
Ik heb bijvoorbeeld de volgende js:
code:
Helaas gaat dit al bij 1 gelijknamige geneste tag de mist in. Hoe zou ik mijn functie kunnen optimaliseren?
1
| text = text.replace(/<(\S+)([^>]*?)>(.+?)<\/\1>/g, function(a0,a1,a2,a3){return'<'+a1+a2+'.1>'+ a3 +'</'+a1+'.1>';}); |
[ Voor 13% gewijzigd door b19a op 09-12-2004 17:57 . Reden: bug ]