[Javascript] IE en InnerHTML

Pagina: 1
Acties:

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Hoi, ik zit met een probleem. Ik heb een ticker gemaakt, in javascript. Dus een scriptje dat de laatste 5 headlines laat zien van een pagina, letter voor letter. Nu moet er dus om de 50ms geupdate worden (een letter erbij). Dit doe ik als volgt:
er is een div#ticker, en daarin een <a>. Bij die <a> wordt er om de 50ms een innerHTML gezet met de tekst. Als de tekst er helemaal staat wordt er 5 seconden gewacht, en begint het weer opnieuw. In Mozilla werkt dit perfect. In Internet Explorer werkt het script opzich wel heel goed, maar m'n CPU springt telkens tijdens het opbouwen van een headline naar 100%. Als de hele headline er staat springt 'ie weer naar nul, en dan weer opnieuw. Dit is niet echt de bedoeling :)

Ik heb zo'n vermoeden dat IE constant opnieuw de grootte van de div moet uitrekenen of iets dergelijks. Daarom heb ik de div een breedte en een hoogte meegegeven, en overflow op hidden gezet. Het mocht niet baten. Het ligt zeker niet aan de rest van het script, want als ik alleen de regel die de innerHTML zet weghaal dan werkt het wel perfect. En die regel is van de vorm:
element.innerHTML = tekst.

Het idee voor zo'n ticker komt van de bbc, zie ook: http://news.bbc.co.uk. Ik heb even gekeken, en daar wordt ook om de 50ms geupdate (ook met innerHTML), en het werkt daar wel perfect.

Heeft iemand ervaring met dit soort dingen?

Verwijderd

Reset je je timer elke keer netjes? Timers kunnen vaak voor een behoorlijke load zorgen.

[edit]Ik zie dat dat het probleem niet kan zijn. Sooterd moet beter lezen...

[ Voor 32% gewijzigd door Verwijderd op 02-08-2005 15:15 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:46

crisp

Devver

Pixelated

1) sla een referentie op naar je anchor in een global variabele; elke keer een lookup doen kost tijd.
2) innerHTML gebruiken om een textNode aan te passen is hetzelfde als een hamer gebruiken om een schroef in te draaien; manipuleer gewoon direct de nodeValue van de textNode in je anchor.

Intentionally left blank


  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Ik was er ondertussen achter, maar het gebruik van firstChild.nodeValue is een stuk beter :)