Sto scrivendo un codice molto semplice per modificare dinamicamente immagine al passaggio del mouse src/mouseout:javascript di cambiare dinamicamente l'immagine 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);
});
}
L'idea è abbastanza semplice: utilizzare una serie di immagini per simulare la barra di voto . E quando un'immagine è coperta dal puntatore del mouse, dovrebbe cambiare colore (ben idealmente includendo tutte le immagini precedenti dovrebbe cambiare colore ma mi sono bloccato prima di arrivarci). La mia domanda è quando passo il mouse su qualsiasi immagine, solo l'ultima immagine cambia colore ('valutazione5'). Sembra che quando == 5 il suo listener di eventi abbia sovrascritto tutti gli altri eventlistener (i = 1,2,3,4)?
'img' all'interno delle funzioni listener anonime si riferisce al' var' nello scope circostante (che contiene l'ultimo valore assegnato: 'rating5'.) Prova e sostituisci' changeimg_color (img); 'con' changeimg_color (this.id); 'o semplicemente passa 'this' (l'immagine che genera il eventi del mouse) alle funzioni 'change * 'che omettono il' e() 'wrappe r. – jensgram