PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Javascript setInterval Problem


Geldmann3
2012-06-23, 01:17:57
Habe folgendes Problem, es soll alle X Sekunden eine Funktion ausgeführt werden. Habe also ein ähnliches Javascript wie folgendes geschrieben.
<html>
<head>
<title>Test</title>
<script type="text/javascript">
function Create()
{
document.write('LALALALALA<br>');
}
</script>
</head>
<body>
<script type="text/javascript">
var steuerung;
steuerung = setInterval("Create()", 5000);
</script>
</body>
</html>
Link: http://riederwald.mine.nu/anonymous/Tester.html -- Chrome macht auch was ich will, und schreibt alle 5 Sekunden "LALALALALA<br>" in den Browser. Doch die anderen getesteten Webbrowser hängen sich daran auf. Jemand eine Idee, wo das Problem liegt?

Danke

Gast
2012-06-23, 09:21:55
Sieht so aus, als wäre nach dem erstmaligen Ausführen der komplette DOM-Tree geleert worden und nur noch dein LALALA... drin, d.h. du überschreibst dein eigenes Script :ugly:.
Warum? Keine Ahnung.

Gast
2012-06-23, 09:26:02
http://javascript.about.com/library/blwrite.htm
Offensichtlich ist deine Nutzung von document.write eine ganz blöde Idee...

esistich
2012-06-23, 09:42:52
Verwende doch innerHTML, denn document.write hat nach dem DOM Aufbau dort eh nichts mehr verloren.



<html>
<head>
<title>Test</title>
<script type="text/javascript">
function Create()
{
document.body.innerHTML += "LALALALALA<br>";
}
</script>
</head>
<body>
<script type="text/javascript">
var steuerung;
steuerung = setInterval("Create()", 5000);
</script>
</body>
</html>

Geldmann3
2012-06-23, 12:42:54
Doch auch mit deiner Lösung, hängen FF & IE sich daran auf....

Edit: Nein, hatte den Cache nicht richtig aufgeräumt, funktioniert, danke!

Nun gut, so kann ich aber nicht an eine beliebige Stelle schreiben ohne das gesamte Document gleich mit JS zu erstellen.

<html>
<head>
<title>Test</title>
<script type="text/javascript">
function Create()
{
document.body.innerHTML += "LALALALALA<br>";
}
</script>
</head>
<body>
Hallo, ich bin der Anfang des HTML Documents.
<script type="text/javascript">
var steuerung;
steuerung = setInterval("Create()", 5000);
</script>
Ich bin das Ende und soll nie neu geschrieben werden.
</body>
</html>
Könnte ich da vielleicht ein Objekt erstellen und dann mit JS darauf zugreifen, so wie ich es oben mit dem gesamten Body mache?

esistich
2012-06-23, 13:05:19
Ich würde es aber mit

steuerung = window.setInterval("Create()", 5000);

machen und dann, wenn nötig mit

window.clearInterval(steuerung);

stoppen.

Geldmann3
2012-06-23, 13:23:10
Jehhaaa, habs jetzt hinbekommen.
<html>
<head>
<title>Test</title>
<script type="text/javascript">
function Create()
{
document.getElementById("Super").innerHTML += "LALALALALA<br>";
}
</script>
</head>
<body>
Hallo, ich bin der Anfang des HTML Documents.
<div id="Super">
</div>
<script type="text/javascript">
var steuerung;
steuerung = setInterval("Create()", 5000);
</script>
Ich bin das Ende und soll nie neu geschrieben werden.
</body>
</html>
http://riederwald.mine.nu/anonymous/Tester.html