Arne Schumann: Funktion mit setInterval in Event Handlern

Hallöchen

Ich habe folgendes Problem:
Ich will eine Funktion definieren und über ein setInterval aufrufen und das alles in einem EventHandler (onClick in meinem Fall).
Ich schaffe es die Funktion zu definieren und einfach aufzurufen:

<input type="button" value="Whatever" onClick="a=0; function hallo() {alert(a);a++;} hallo();"></input>

Es klappt mit setInterval wenn man die Funktion auslagert und nur den Aufruf im EventHaldler hat:

<script>a=0; function hallo() {alert(a);a++;}</script>
<input type="button" value="Whatever" onClick="setInterval('hallo()', 1000);"></input>

Aber, wenn ich versuche alles in den EvenHandler zu packen sagt er mit "Zeile:1 Zeichen:1 Objekt erwartet!"

<input type="button" value="Whatever" onClick="a=0; function hallo() {alert(a);a++;} setInterval('hallo()', 1000);"></input>

Kann mir wer sagen warum das letzte nicht klappt?! Bzw wies richtig sein muss wenn es geht?!

Danke schonmal
   Arne

  1. Hallo,

    <input type="button" value="Whatever" onClick="a=0; function hallo() {alert(a);a++;} setInterval('hallo()', 1000);"></input>

    Kann mir wer sagen warum das letzte nicht klappt?! Bzw wies richtig sein muss wenn es geht?!

    IMO existiert deine function hallo nur während! des ausgelösten onclick events.

    gruss

    --
    no strict;
    no warnings;
    Über eine Rückmeldung freut sich später jeder, der das gleiche Problem hat und im Archiv nach einer Lösung sucht.
  2. Hello,

    <input type="button" value="Whatever" onClick="a=0; function hallo() {alert(a);a++;} hallo();"></input>

    <script>a=0; function hallo() {alert(a);a++;}</script>
    <input type="button" value="Whatever" onClick="setInterval('hallo()', 1000);"></input>

    Aber, wenn ich versuche alles in den EvenHandler zu packen sagt er mit "Zeile:1 Zeichen:1 Objekt erwartet!"

    <input type="button" value="Whatever" onClick="a=0; function hallo() {alert(a);a++;} setInterval('hallo()', 1000);"></input>

    Die Funktion muss vorher definiert sein.

    Wenn Du Funktionen mit setInterval aufrufst, solltest Du das nicht doppelt tun, denn dann werden sie auch doppelt in die Intervallliste eingetragen. Also sollte die Funktion eine Prüfung enthalten, ob sie schon aktiviert wurde.

    Mit onClick kannst Du sie dann aktivieren und mit clearInterval() ggf. auch wieder ausschalten, wenn Du Dir das Handle von setInterval() gemerkt hast.

    siehe hierzu: http://selfhtml.teamone.de/javascript/objekte/window.htm#set_interval

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    [ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
      Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
      Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen