Chris234: Bei der Verwendung von setTimeout kann über innerHTML nicht auf ein Objekt zugegriffen werden.

Beitrag lesen

Hallo,

ich komme bei dem Problem nicht weiter. Ich habe eine Webseite, bei der der angezeigte Inhalt dynamisch aus einer xml-Datei ausgelesen wird. Demzufolge werden die Werte erst nachdem das DOM aufgebaut ist eingelesen. Das JavaScript dafür wird im body mit onLoad aufgerufen. Nun sollen Teile der HTML-Seite abhängig von den eingelesenen Werten ausgeblendet werden. Dafür habe ich ein weiteres JavaScript geschrieben, welches über die ID der entsprechenden Elemente Cookies mit deren Inhalt setzen soll. (Die Daten werden auf weiteren Seiten benötigt und sollen nicht jedes mal neu eingelesen werden) Allerdings benötige ich bei der Funktion eine Verzögerung für die Ausführung, damit zuvor alle Werte eingelesen sind. Ich habe versucht dies mittels setTimeout zu realisieren, aber dann bekomme ich die Fehlermeldung: Uncaught TypeError: Cannot read property 'innerHTML' of null. Wenn ich die Funktion ohne setTimeout aufrufe funktioniert alles.

Hat jemand eine Idee wo mein Denkfehler liegt? Angefügt sind die relevanten Auszüge aus der HTML-Datei und dem JavaScript.

Vielen Dank Christoph

function cookieHPS(){
    setTimeout(cHPS,2000);
}

function cHPS(){
    console.log('Pause');
    var inhalt = document.getElementById('HVorhanden').innerHTML;
        alert(inhalt);
    if (inhalt=='aktiv')
        {
            localStorage.setItem(Hvorhanden, 1);
        }
    var inhalta = document.getElementById('Anzahl_eins').innerHTML;
        alert(inhalta);
    var inhaltb = document.getElementById('Anzahl_zwei').innerHTML;
        alert(inhaltb);
    
    console.log('cookieHPS ausgeführt')
}
            <tr>
                <td> <br></td>
              <td><div class="value_no_edit"><span id="Anzahl_eins">-</span></div></td>
              <td><div class="value_no_edit"><span id="Anzahl_zwei">-</span> </div></td>
              <td><div class="value_no_edit" id="eins"><span category="Main" cfg="15" id="HVorhanden">-</span></div></td>
            </tr></table>