Quiero mantener un bucle ‘for’ en un escuchador de eventos para poder enviarlo como un parámetro para una función.
Estoy intentando cambiar la imagen de fondo dependiendo del símbolo que se esté seleccionando, pero cuando intento retornar changebackground([i])
siempre retorna un arreglo con longitud 1 y el número 0.
¿Cómo puedo hacer para que retorne el número del símbolo que se está seleccionando? Por ejemplo, si se selecciona el segundo símbolo, quiero que retorne checkbackground([1])
a la función changebackground(logo)
. Puedes ver los símbolos aquí para tener una idea.
A continuación se muestra mi código:
let background = document.getElementById("main_home_container");
let factionlogo = document.getElementsByClassName("home_image");
for (let i = 0; i < factionlogo.length; i++) {
factionlogo[i].addEventListener("mouseenter", function() {
changebackground([i]);
});
factionlogo[i].addEventListener("mouseleave", revertbackground);
}
function changebackground(logo) {
if (logo == 0) {
background.style.backgroundImage = 'url("/Img/bg1.png")';
} else if (logo == 1) {
background.style.backgroundImage = 'url("/Img/bg2.png")';
}
}
function revertbackground() {
background.style.backgroundImage = 'url("/Img/home.png")';
}
davy.ai
Para que devuelva el número del símbolo sobre el que se pasó el mouse, puede usar el método
indexOf
para obtener el índice del elemento sobre el que se pasó el mouse dentro del arreglofactionlogo
. Luego, pase ese índice a la funciónchangebackground
.Aquí está el código actualizado:
En este código, estamos utilizando
Array.prototype.indexOf.call(factionlogo, this)
para obtener el índice del elemento actual dentro del arreglofactionlogo
. Luego, pasamos ese índice a la funciónchangebackground
.