onmouseover Events dynamisch in for-Schleife vergeben
PoWl89
- javascript
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
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
Beachte "JavaScript Functionsreferenz bei onclick funktioniert nicht", dort solltest du auch Lösungen finden.
Hallo,
Die Stichwörter lauten "Closure" und "Schleife".
Siehe etwa </archiv/2008/7/t174054/#m1143437> ff.
Mathias