ich einige sehr einfachen Code ich schreibe dynamisch Bild src mit der Maus darüber/mouseout zu ändern:Javascript dynamisch Bild src ändern
function e(id) {
return document.getElementById(id);
}
function changeimg_bw(ele) {
e(ele).src='rating_bw.png';
}
function changeimg_color(ele)
e(ele).src='rating_color.png';
}
for(var i=1;i<=5;i++) {
var img ='rating'+i;
e(img).addEventListener('mouseover', function(event) {
changeimg_color(img);
});
e(img).addEventListener('mouseout', function(event) {
changeimg_bw(img);
});
}
Die Idee ist ziemlich einfach: eine Reihe von Bildern verwenden, um den Bewertungsbalken zu simulieren . Und wenn ein Bild mit dem Mauszeiger bedeckt ist, sollte es die Farbe ändern (im Idealfall einschließlich aller vorherigen Bilder sollte die Farbe wechseln, aber ich blieb stecken, bevor ich dorthin kam). Meine Frage ist, wenn ich auf irgendein Bild schwebe, ändert nur das letzte Bild die Farbe ('rating5'). Sieht aus, wenn i == 5 sein Eventlistener hat alle anderen Eventlistener überschrieben (i = 1,2,3,4)?
'img' innerhalb der anonymen Listener-Funktionen lesen' var 'im umgebenden Bereich (der den letzten zugewiesenen Wert enthält: 'rating5'). Versucht und ersetzt' changeimg_color (img); 'mit' changeimg_color (this.id); 'oder reicht einfach' this '(das Bild, das den Mausereignisse) zu den 'change *' - Funktionen, wobei der 'e()' - Wrap weggelassen wird r. – jensgram