Martin: Funktion mit Parameter aus einer anderen Funktion m.Param.aufrufen

Hallo!

Habe folgendes Problem:

Folgende Funktion will ich als Kontroll-Funktion einsetzen und muß eine andere Funktion mit 2 Parameter füttern, die ich schon der 1. Funktion übergeben habe, d.h. ich will eine Zelle einer Tabelle  blinken lassen.

Funktionsaufruf:

flash("f2","blue");

Java-Script-Code:

function flash(zelle,farbe){
for( i=6; i>0; i-- ){
setTimeout("go('f2','red')",20);
setTimeout("go('f2','white')",20);
}
}

function go(zelle,farbe){
document.all[zelle].style.backgroundColor =farbe;
}

Leider gibt's dabei immer ein Fehler.

Wer hat einen Tip für mich???

Danke schonmal

Martin

  1. hi,
    Probiers mal ohne Anführunsgzeichen:

    function flash(zelle,farbe)
    {
    for( i=6; i>0; i-- )
      {
      setTimeout(go('f2','red'),20);
      setTimeout(go('f2','white'),20);
      }
    }

    Grüße
    Klaus

    1. Hi!

      Leider geht's immer noch nicht so gut. Schau doch mal auf:

      http://home.a-city.de/smarty/index.htm

      und bewege die Maus auf Busfahrplan.

      Dann gehe zu
      http://home.a-city.de/smarty/AzubiPage/menue.htm

      und klicke mal auf ein Button. Du wirst sehen - die selbe Funktion mit zwei Unterschiedlichen Reaktionen!

      Was jetzt???

      Martin

      1. Hi!

        Leider geht's immer noch nicht so gut. Schau doch mal auf:

        http://home.a-city.de/smarty/index.htm

        »»

        und bewege die Maus auf Busfahrplan.

        Dann gehe zu
        http://home.a-city.de/smarty/AzubiPage/menue.htm

        und klicke mal auf ein Button. Du wirst sehen - die selbe Funktion mit zwei Unterschiedlichen Reaktionen!

        Was jetzt???

        Martin

        hallo Martin,

        wenn's darum geht, daß das Bild flackern soll, dann tut's das ja, aber eben nur bei 'onClick'.
        auf der anderen Seite ist wird 'flash()' bei 'onMouseOver' aufgerufen.
        Vielleich ist's das

        Grüße
        Klaus

      2. Hallo Martin,

        http://home.a-city.de/smarty/index.htm

        »»

        rechter Mausklick auf der Seite: *lol*

        Meine Antwort: *lol*

        Pech gehabt, ich sehe keinen Grund dir zu helfen.

        Viele Grüße
        Antje

        1. Hallo Antje,
          Sei nun mal nicht so streng.
          nerviger ist in jedem Falle, dieses 'alert()', wenn Du mit Netscape  arbeitest. Was interessiert mich, daß das blinken und leuchten bei mir nicht geht.

          Das Web ist voll von solchem Schnick-Schnack. Ist nun mal so.
          Alles was geht, wird auch gemacht, irgendwann.

          Ich würde mich halt nicht lange auf solchen Seiten aufhalten.
          Vielleicht ist es eine Projekt-Arbeit, die genau das zur Aufgabe hat, nämlich alles mögliche in eine Seite reinzupacken.

          Grüße
          Klaus

        2. Oh, sorry..... jetzt ist es weg!!

          Kannst du nicht nochmal schauen?? (lieb guck) ???

          Martin

          1. Hallo Martin,

            Oh, sorry..... jetzt ist es weg!!

            :-) ich hoffe es bleibt auch so. Wie viele andere navigiere ich extreme viel mit der rechten Maustaste. Seiten, die das unterbinden, haben mich normalerweise das letzte Mal gesehen.

            Kannst du nicht nochmal schauen?? (lieb guck) ???

            Du hast ein grundsätzliches Problem:

            function flash(zelle,farbe){
            for( i=6; i>0; i-- ){
            setTimeout("go('f2','red')",20);
            setTimeout("go('f2','white')",20);
            }
            }

            Diese Schleife, ruft 6 mal hintereinander den Farbwechsel auf und dazu in gleichen Zeitabständen.

            i=6 rot in 20 ms, weiß in 20 ms
            i=5 rot in 20 ms, weiß in 20 ms

            ...

            merkst du worin das Problem besteht? Schleifen sind relativ schnell. Es vergehen pro Durchlauf keine 20 ms. Deshalb klappt dein Script nicht.

            Eine mögliche Lösung wäre

            function flash(zelle,farbe,i)
            {

            if (i%2==0)go('f2','red') else go('f2','white')
            i++;
            if (i<6) setTimeout("flash('"+zelle+"','"+farbe+"',"+i+")",20);

            }

            Als Zählerparameter mußt du also noch zusätzlich i übergeben.
            if (i%2==0) untersucht, ob i gerade oder ungerade ist (ist der Rest bei der Division durch 2 0 (gerade) oder nicht (ungerade).

            Viele Grüße
            Antje

            <img src="http://pc-anfaenger.de/pca/sam/pcanfaenger.gif" alt="">