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
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.
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
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.