piszę jakiś bardzo prosty kod dynamicznie zmieniać obraz na mouseover src/odsunięciu myszy:javascript dynamicznie zmienić obraz src
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);
});
}
Idea jest dość prosta: wykorzystać tablicę obrazów do symulacji pasek znamionową . A gdy jakiś obraz jest pokryty wskaźnikiem myszy, powinien zmienić kolor (najlepiej jeśli wszystkie poprzednie obrazy powinny zmienić kolor, ale utknąłem zanim się tam dostanę). Moje pytanie brzmi, gdy najeżdżam na dowolny obraz, tylko ostatni obraz zmienia kolor ("rating5"). Wygląda, gdy i == 5 jego eventlistener nadpisał wszystkie inne eventlistener (i = 1,2,3,4)?
'img' wewnątrz anonimowych funkcji detektorów odnosi się do' var' w otaczającym zakresie (który przechowuje ostatnią przypisaną wartość: 'rating5'.) Spróbuj i zamień' changeimg_color (img); 'z' changeimg_color (this.id); 'lub po prostu przekazuj' this' (obraz spawninga zdarzenia myszy) do funkcji 'change *' pomijając wracke 'e()' r. – jensgram