Hej Line
linelarsen15 wrote:
> kan i se fejlen??
> den skal skrive den nye x værdi hver 5. sek.
Problemet er at din document.write skriver værdien ud i den blå luft. Du
kan *kun* bruge document.write til at opbygge siden *mens* den hentes
ind, ikke efter den er hentet ind ! (ok, der er også en måde at bruge
open/write/close funktionerne til at opdatere indholdet i en *anden*
frame/window eller i et Netscape 4.x layer, men det er næppe det du
umiddelbart vil).
Du kan i stedet gøre noget lignende følgende:
<html>
<head>
<title>HEJ</title>
<script type="text/javascript" language="javascript">
var x = 1;
function skift() {
if (!document.getElementById) return;
document.getElementById("tid").innerHTML = x;
x++;
if (x == 5) return;
setTimeout("skift();",1000);
}
</script>
</head>
<body onload="skift();">
<P id="tid"></P>
</body>
</html>
Ovenstående udskifter indholdet <P id="tid"></P> hver gang skift() kaldes.
Du kan evt. lave en løsning som bruger setInterval() i stedet
setTimeout(), det synes jeg vil være lidt mere elegant (du undgår det
rekursive kald).
Ovenstående kode skulle virke Internet Explorer 5+, Netscape 6+,
Mozilla, Konqueror, K-Meleon, Galeon, m.fl. Det vil ikke virke i
Internet Explorer 4 og Netscape 4.x, men hvis du tilføjer følgende først
i din javascript kode burde det også virke i IE4:
if (document.all && !document.getElementById)
{
document.getElementById = function(e) {return document.all[e]};
}
Netscape 4.x kræver lidt mere benarbejde, men der er også en måde (som
antydet først i dette indlæg).
Mvh. Stig
stig@rockland.dk
* Bedre (D)HTML ? -->
http://www.rockland.dk/stig/upghtml.html *