Funktion in Rythmus aufrufen (An- / Abschaltbar
brockerdocker
- javascript
Hi,
ich versuche eine Funktion Vor() in einem bestimmten Rythmus aufzurufen. Dies hab ich mit
var aktiv = window.setInterval("Vor()", 2000)
auch hinbekommen. Ich möchte aber gerne diesen Rhythmus durch klicken an- und abschalten können. Dies habe ich mit folgendem Script versucht:
<html>
<head>
<title></title>
</head>
<body>
<script language="JavaScript">
[code lang=javascript]
<!--
var aktiv = window.setInterval("Vor()", 2000);
function Vor() {
alert("wechsel");
}
function Start() {
alert("Start");
var aktiv = window.setInterval("Vor()", 2000);
}
function Stop() {
alert("Stop");
window.clearInterval(aktiv);
}
//-->
</script>
<noscript></noscript>
<p onClick="Start()">Start</p>
<p onClick="Stop()">Stop</p>
</body>
</html>
[/code]
Ich kann jetzt damit den beim Laden startenden Rhythmus ausschalten und wieder anschalten, aber ich krieg ihn dann nicht mehr aus. Irgendwo hackt es also dann.
Wär cool, wenn wer ne idee hätte, so dass ich den Rhythmus beliebig anhalten und wieder weiterlaufen lassen kann. Danke schonmal,
brockerdocker
Hallo,
Ich kann jetzt damit den beim Laden startenden Rhythmus ausschalten und wieder anschalten, aber ich krieg ihn dann nicht mehr aus.
das ist auch logisch. Beim Laden der Seite startest du mit dieser Anweisung:
var aktiv = window.setInterval("Vor()", 2000);
Beim Klicken auf deinen Stop-Button entsorgst du den Timer, dessen Referenz ja in 'aktiv' gespeichert ist:
function Stop() {
alert("Stop");
window.clearInterval(aktiv);
}
Das Problem ist das erneute Starten mit dem Start-Button, der diese Funktion aufruft:
function Start() {
alert("Start");
var aktiv = window.setInterval("Vor()", 2000);
}
Hier definierst du eine *neue* Variable 'aktiv', die aber nur lokal innerhalb von Start() gültig ist und mit der globalen Variablen gleichen Namens nichts zu tun hat. Du solltest hier auf die globale Variable zugreifen, anstatt eine neue lokal zu deklarieren.
Irgendwo hackt es also dann.
Wie jetzt? Wer hackt hier?
Ach so, du meintest, es _hakt_? Ja gut, das sollte nun mit einer kleinen Korrektur zu regeln sein.
Schönen Sonntag noch,
Martin
Hi,
vielen Dank, jetzt funktioniert es wunderbar.
mfg brockerdocker