[DHTML] DOM ipv. innerHTML

Pagina: 1
Acties:

  • Klaus_1250
  • Registratie: December 2000
  • Laatst online: 04-08 11:42
Ik heb een functie die letters in links verandert en span-tags toevoegd:

<a>dit</a> word door de functie bv. <a>d<span>a</span>t</a>.

Met innerHTML is dit erg simpel te doen, maar das helaas niet DOM-complaint.
Alleen, het herschrijven van de functie naar DOM-complaint code is niet zo simpel als ik dacht. Ik heb mijn DHTML Definitve Reference er al op nageslagen en ook Google erop nagespit, maar echt ver kom ik niet.
Ik snap dat ik eerst cloneNode moet gebruiken, maar daarna snap ik er niks meer van. Hoe zoek ik bv. de letter en zijn posiite? Is er ergens een goede tutorial hiervoor?

  • André
  • Registratie: Maart 2002
  • Laatst online: 19-08 12:30

André

Analytics dude

De letters en de positie kun je nog steeds op dezelfde manier met indexOf vinden. Alleen zoek je dan niet in de innerHTML maar in de childNodes.

Wat is nu precies het probleem dan, wat gaat er fout in je code?

Verwijderd

Waarom zou je innerHTML willen laten vallen?

  • Klaus_1250
  • Registratie: December 2000
  • Laatst online: 04-08 11:42
OK, thanx, probleem wat ik heb/had is met die childNodes. Denk dat het met een veel tijd en geduld het me moet gaan lukken...

  • Klaus_1250
  • Registratie: December 2000
  • Laatst online: 04-08 11:42
Verwijderd schreef op 14 augustus 2003 @ 19:52:
Waarom zou je innerHTML willen laten vallen?
Het is niet DOM-complaint. Das al één minpunt. Andere minpunt is dus dat vroeg of laat andere browsers het dus ook gaan laten vallen.

  • André
  • Registratie: Maart 2002
  • Laatst online: 19-08 12:30

André

Analytics dude

Klaus_1250 schreef op 14 augustus 2003 @ 19:55:
[...]


Het is niet DOM-complaint. Das al één minpunt. Andere minpunt is dus dat vroeg of laat andere browsers het dus ook gaan laten vallen.
Dat het niet DOM compliant is oke,
maar het feit dat ooit 1 van de browsers het niet gaat ondersteunen hoef je nu toch geen rekening mee te houden?

  • Klaus_1250
  • Registratie: December 2000
  • Laatst online: 04-08 11:42
André schreef op 14 August 2003 @ 19:58:
[...]

Dat het niet DOM compliant is oke,
maar het feit dat ooit 1 van de browsers het niet gaat ondersteunen hoef je nu toch geen rekening mee te houden?
Liever vroeger als later. Als ik nu al weet dat bepaalde code later problemen gaat opleveren, dan verander ik het liever al nu...

Verwijderd

Klaus_1250 schreef op 14 augustus 2003 @ 19:55:
[...]
Het is niet DOM-complaint. Das al één minpunt. Andere minpunt is dus dat vroeg of laat andere browsers het dus ook gaan laten vallen.
Ooit rijden auto's allemaal op zonneenergie .... ;) innerHTML laten vallen gaat echt nog wel min. 2 jaar duren. (lees: MSIE 6 -> MSIE 7 update).

Tegen de tijd dat innerHTML niet meer bruikbaar is, zal je hele app ook al verouderd zijn, en is wellicht DOM al niet meer compliant. Kun je weer overnieuw beginnen.

[ Voor 19% gewijzigd door Verwijderd op 14-08-2003 20:04 ]


Verwijderd

Okay, stel, we hebben het niet over een HTML pagina, maar over een XML
document, en een Java inplementatie van DOM level 2.
(m.a.w.: innerHTML is niet beschikbaar).

Dan is het wel van belang dat je pure DOM methoden gebruikt.

JavaScript:
1
2
cutNode = element.childNodes.item(0).splitText(1).splitText(1).parentNode.replaceChild(document.createElement('span'), element.childNodes.item(1));
element.childNodes.item(1).appendChild(cutNode);

Okay, dit is Javascript, maar het is zonder veel moeite te porten naar Java.
Java:
1
2
cutNode = element.getChildNodes().item(0).splitText(1).splitText(1).getParentNode().replaceChild(document.createElement("span"), element.getChildNodes().item(1));
element.getChildNodes().item(1).appendChild(cutNode);

Het gaat me ook dan om het idee. De topicstarter vraagt naar DOM methoden, en niet naar innerHTML.

  • Klaus_1250
  • Registratie: December 2000
  • Laatst online: 04-08 11:42
Verwijderd schreef op 14 August 2003 @ 20:09:
Okay, stel, we hebben het niet over een HTML pagina, maar over een XML
document, en een Java inplementatie van DOM level 2.
(m.a.w.: innerHTML is niet beschikbaar).

Dan is het wel van belang dat je pure DOM methoden gebruikt.

JavaScript:
1
2
cutNode = element.childNodes.item(0).splitText(1).splitText(1).parentNode.replaceChild(document.createElement('span'), element.childNodes.item(1));
element.childNodes.item(1).appendChild(cutNode);

Okay, dit is Javascript, maar het is zonder veel moeite te porten naar Java.
Java:
1
2
cutNode = element.getChildNodes().item(0).splitText(1).splitText(1).getParentNode().replaceChild(document.createElement("span"), element.getChildNodes().item(1));
element.getChildNodes().item(1).appendChild(cutNode);

Het gaat me ook dan om het idee. De topicstarter vraagt naar DOM methoden, en niet naar innerHTML.
THANX! Hierin staat alles wat ik zoek / zocht :-)

  • Klaus_1250
  • Registratie: December 2000
  • Laatst online: 04-08 11:42
Verwijderd schreef op 14 August 2003 @ 20:02:
[...]


Ooit rijden auto's allemaal op zonneenergie .... ;) innerHTML laten vallen gaat echt nog wel min. 2 jaar duren. (lees: MSIE 6 -> MSIE 7 update).

Tegen de tijd dat innerHTML niet meer bruikbaar is, zal je hele app ook al verouderd zijn, en is wellicht DOM al niet meer compliant. Kun je weer overnieuw beginnen.
innerHTML zal echt niet wegvallen tot MSIE 10, ik denk dat het eerder uit browsers zoals Mozilla verdwijnt. Waarschijnlijk is de app dan al wel verouderd, maar op deze manier leer ik wel DOM2.

Verwijderd

Dat heb ik zojuist even in elkaar geflanst met de DOM Level 3 Core Specification erbij.
Een behoorlijk technische tekst, maar in principe staat van alle methoden vrij precies geschreven wat ze moeten doen.

[ Voor 8% gewijzigd door Verwijderd op 14-08-2003 20:15 ]


  • Klaus_1250
  • Registratie: December 2000
  • Laatst online: 04-08 11:42
Verwijderd schreef op 14 August 2003 @ 20:15:
Dat heb ik zojuist even in elkaar geflanst met de DOM Level 3 Core Specification erbij.
Een behoorlijk technische tekst, maar in principe staat van alle methoden vrij precies geschreven wat ze moeten doen.
Ik had even naar de DOM2 specs gekeken, maar het gaat me beter af met een goed boek of website.

  • Klaus_1250
  • Registratie: December 2000
  • Laatst online: 04-08 11:42
Nu het nog werkend in Mozilla zien te krijgen... :-(

Voor degene die het intereseert; replaceNode werkt niet in Mozilla, maar replaceChild wel.

[ Voor 48% gewijzigd door Klaus_1250 op 15-08-2003 12:30 ]

Pagina: 1