Dokładnie

,
getElementById to wg mnie najważniejsza metoda obektu document, pozwala przechwycić kazdy obiekt html'a któremu się nada identyfikator (atrybut id), jego użycie jest bardzo proste:
Kod: Zaznacz cały
<p id="napis1">Tekst próbny</p>
......................
<script>
//Przechwycenie znacznika <p> o identyfikatorze "napis1"
napis = document.getElementById('napis1')
// nadanie nowych właściwości: nowy tekst, nowy kolor
napis.style.color = "red"
napis.innerHTML = "Nowy <b>tekst</b> próbny"
<script>
Własność
innerHTML jest też niezwykle użyteczna.
Umożliwia dynamiczne zmienianie treści znajdującej się wewnątrz przechwyconego znacznika, czyli wszystko co znajduje się pomiedzy <x id="ix"> i </x>). I właśnie ją polecałbym zamiast metody
document.write().
Przyczyną wadliwego działania skryptu jest właśnie metoda
write(), a nie setTimeout(), gdyż działa ona globalnie na całym dokumencie HTML, i ma tę przykrą właściwość, że jeśli jest wywoływana poraz pierwszy w momencie gdy dokument jest już wygenerowany (w skrypcie po upływie 0.5 sek), wywołuje niejawnie metodę open() (ponieważ dokument jest już zamkniety) która kasuje całą poprzednia zawartość, w tym funkcje Data().
W czasie drugiego wywołania funkcja Data() popełnia samobójstwo

, ale jeszcze wyświetla datę.
W momencie wywołania :
funkcja Data() już nie istnieje, a setTimeout z powodu jej braku wywołuje błąd.