Tamelon: getElementByID auf ajax dokument

Hallo,

ich habe ein problem mit einem timer. muss aber etwas ausholen:

ich habe in meinem dokument ein header das ich via jquery.load lade. in diesem header ist folgendes definiert:

<span id="timerid_x">00:00:00</span>

wobei x die nummer des timers angib, es kann also mehrere dieser spans geben. über javascript werden dann countdowns in diesen span-feldern gestartet.

dies funktioniert einwandfrei wenn das dokument neu geladen wird, auch mit 10 timern.

wenn aber ein neuer timer hinzukommt wird der header via ajax (jquery.load) neu geladen und alle timer neu gestartet. dann ist aber immer nur die letzte uhr am laufen. alle anderen stehen auf 00:00:00. asyncron und syncrones laden bringt beides das gleiche ergebnis.

meine vermutung: da ich die uhr mittels javascript/setTimeout und document.getElementById(timer).innerHTML = NeuerTimer;
neu setzte und dies nur bei der neuesten uhr funktioniert, gehe ich davon aus das getElementById noch irgendwie die alten, also vom vorher geladenen header irgendwie sieht und ersetzt.

diverse alert(); plazierungen in der countdown funktion zeigen an das alle countdowns weiter laufen.

ist meine Vermutung richtig? wenn ja was kann ich dagegen tun?

ich hoffe das Problem ist verständlich...

Tam

  1. ich hoffe das Problem ist verständlich...

    soweit zur Hoffnung!

    Wie wäre es mit der Preisgabe des Wissens um dein JavaScript? Mit den paar Brocken wird's schwierig!

  2. Hallo Tamelon,
    ein bisschen Quelltext, oder noch besser ein online-Beispiel wäre schon hilfreich.

    Ich nehme an, folgende eile ist nur Pseudo-code zur besseren Erklärung

    document.getElementById(timer).innerHTML = NeuerTimer;

    und im realen script steht dort schon sowas wie

      
    document.getElementById('timer_id0').innerHTML = '00:09:08';  
    
    

    Liebe Grüße

    mbr

  3. Hi,

    meine vermutung: da ich die uhr mittels javascript/setTimeout und document.getElementById(timer).innerHTML = NeuerTimer; neu setzte und dies nur bei der neuesten uhr funktioniert, gehe ich davon aus das getElementById noch irgendwie die alten, also vom vorher geladenen header irgendwie sieht und ersetzt.

    ist zwar kompliziert beschrieben, aber: Ja, wenn du Teile des Dokuments mit innerHTML neu setzt, wird der vorher an dieser Stelle stehende Inhalt entsorgt. Vorher ermittelte Referenzen auf die bisherigen Elemente sind dann ungültig und zeigen nur noch irgendwo in den Wald.

    Ciao,
     Martin

    --
    Dem Philosoph ist nichts zu doof.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(