Fridolin: Schleife bei mouseover ausführen

hallo zusammen!
ich möchte gerne die Farbe eines Links bei Mouseover ändern, doch soll die Schleife nur einmal durchlaufen werden und erst beim nächsten Mouseover wieder aufgerufen werden. Ich habe zur Zeit das Problem dass ich die Schleife entweder NUR EINMAL oder (UN)ENDLICH OFT zum Durchlaufen bringe. Außerdem würde ich gerne wissen, ob man die gleiche Funktion bei verschiedenen Links zum Laufen bringen kann (vier an der Zahl). Ich weiß, mit id ist das nicht möglich, aber gibt es da vielleicht andere Möglichkeiten?

Der Code:

var i = 0;
  var Farbe;
  function blinkenderlink(){
   i++;
   if (i==1) Farbe = "#FFFFFF"
   if (i==2) Farbe = "#EEEEEE"
   if (i==3) Farbe = "#CCCCCC"
   if (i==4) Farbe = "#999999"
   if (i==5) Farbe = "#666666"
   if (i==6) Farbe = "#000000"
   if (document.all) {
    blink.style.color = Farbe;
   } else {
    document.getElementById('blink').style.color = Farbe;
   }
   setTimeout('blinkenderlink()', 75);
   if (i > 6) i = 0; /*break*/
  }
_______________________________________________________________________________

<a href="selten.php" id="blink" name="blink" onmouseover="blinkenderlink();">selten</a>

Ich hab' auch schon versucht das i beim Aufruf zu übergeben, doch das hat ebensowenig funktioniert. Meine JavaScript-Kenntnisse sind leider eher bescheiden, darum bin ich für alle Vorschläge dankbar!

Vielen Dank im voraus,
Fridolin

  1. hi,

    Ich habe zur Zeit das Problem dass ich die Schleife entweder NUR EINMAL oder (UN)ENDLICH OFT zum Durchlaufen bringe.

    vielleicht solltest du vor jedem neuen durchlauf deine zählvariable i wieder auf null setzen.

    Außerdem würde ich gerne wissen, ob man die gleiche Funktion bei verschiedenen Links zum Laufen bringen kann (vier an der Zahl). Ich weiß, mit id ist das nicht möglich

    natürlich ist das mittels ID möglich.
    jeder link bekommt seine eigene ID, und diese wird der funktion als parameter übergeben.

    gruss,
    wahsaga

  2. Hi Fridolin!

    Wenn ich es richtig verstanden habe (der link soll genau einmal blinken wenn man mit der Mouse über den link kommt) ist folgendes die lösung:

    function blinkenderlink()
      {
       i++;
       if (i==1) Farbe = "#FFFFFF"
       if (i==2) Farbe = "#EEEEEE"
       if (i==3) Farbe = "#CCCCCC"
       if (i==4) Farbe = "#999999"
       if (i==5) Farbe = "#666666"
       if (i==6) Farbe = "#000000"

    if (document.all)
       {
         blink.style.color = Farbe;
       }
       else
       {
         document.getElementById('blink').style.color = Farbe;
       }

    /*  WICHTIG - IF!! */

    if (i > 6)
         i = 0;
       else
         setTimeout('blinkenderlink()', 75);

    }

    Problem war die Abbruchbedingung der Schleife. Es lebe die Rekursion!

    LG wanderer

    1. Wenn ich es richtig verstanden habe (der link soll genau einmal blinken wenn man mit der Mouse über den link kommt) ist folgendes die lösung:

      function blinkenderlink()
        {
         i++;
         if (i==1) Farbe = "#FFFFFF"
         if (i==2) Farbe = "#EEEEEE"
         if (i==3) Farbe = "#CCCCCC"
         if (i==4) Farbe = "#999999"
         if (i==5) Farbe = "#666666"
         if (i==6) Farbe = "#000000"

      if (document.all)
         {
           blink.style.color = Farbe;
         }
         else
         {
           document.getElementById('blink').style.color = Farbe;
         }

      /*  WICHTIG - IF!! */

      if (i > 6)
           i = 0;
         else
           setTimeout('blinkenderlink()', 75);

      }

      sieht natürlich nicht schön aus (was habt ihr eigentlich alle gegen Arrays?)

      var Farbe = new Array( "#FFFFFF", "#EEEEEE", "#CCCCCC", "#999999", "#666666", "#000000");
      var counter = 0;

      function blinkenderlink()
      {
         if(counter > Farbe.length)
         {
            counter = 0;
            return;
         }
         if (document.blink && document.blink.style)
         document.blink.style.color = Farbe[counter];
         else if(document.getElementById)
         document.getElementById('blink').style.color = Farbe[counter];

      counter++;
         setTimeout('blinkenderlink()', 75);
      }

      Struppi.

      1. Struppi.

        absolut großartig. schnell, komprimiert, gut.
        Recht herzlichen Dank, Fridolin