PoWl89: onmouseover Events dynamisch in for-Schleife vergeben

Hi!

Ich möchte auf meiner HP so eine Bewertungsfunktion erstellen. Dazu habe ich 5 Halbtransparente Sternchen, die bei mouseover vollständig sichtbar werden und auf Klick ihre Sichtbarkeit speichern, genauso wie die Bewertung bei eBay.

Nun wollte ich einfach mal probieren jedem Sternchen sein mouseover zu geben. Um nicht jedes Sternchen Bild zu benennen benutze ich DOM um sie anzusteuern. lediglich das sie umgebende DIV ist mit einer id benannt.

  function bewertung(id)  
  {  
    var parent = document.getElementById(id);  
  
    var currentChild = parent.firstChild;  
    currentChild = currentChild.nextSibling; // Leerzeile überspringen  
    currentChild = currentChild.nextSibling; // Blind.gif überspringen  
  
    var stars = new Object;  
    var starsFader = new Object;  
  
    for(var i=0; i<5; i++)  
    {  
      stars[i] = currentChild;  
      starsFader[i] = new fadingObject(stars[i]);  
      starsFader[i].fadeTo(30);  
  
      stars[i].onmouseover = function()  
      {  
        alert(i);  
      }  
  
      currentChild = currentChild.nextSibling;  
    }  
  }  
  
  var idee = new bewertung('bewertung_idee');

Das Problem ist, dass ich bei jedem Mouseover, egal bei welchem Stern die Meldung "5" erhalte. Demnach enhält die alert(i); funktion nur eine Referenz auf die interne Variable i des Objekts idee. Wie kann ich den direkten Wert vergeben lassen und keine Referenz darauf?

lg PoWl

  1. Hallo,

    Ich glaube mal das sind 10 Sternchen richtig? Dann würde ich die mouseOver-events auch per hand setzen. wären das jetzt 50+ sternchen, könnte ich dein problem verstehen...

    MfG. Christoph

    --
    Wo die Sprache aufhört, fängt die Musik an...
    Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
    Go to this or Go to this
  2. Beachte "JavaScript Functionsreferenz bei onclick funktioniert nicht", dort solltest du auch Lösungen finden.

    --
    Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.
    Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:|
  3. Hallo,

    Die Stichwörter lauten "Closure" und "Schleife".

    Siehe etwa </archiv/2008/7/t174054/#m1143437> ff.

    Mathias