
Alejandro Rodríguez
PreguntaCódigo JS:
let available_TEMP = document.querySelectorAll('.case') let available = Array.prototype.slice.call(available_TEMP) available[0].addEventListener('click', onClickCase()) available[1].addEventListener('click', onClickCase()) available[2].addEventListener('click', onClickCase()) available[3].addEventListener('click', onClickCase()) available[4].addEventListener('click', onClickCase()) available[5].addEventListener('click', onClickCase()) available[6].addEventListener('click', onClickCase()) available[7].addEventListener('click', onClickCase()) available[8].addEventListener('click', onClickCase()) function onClickCase() { console.log("Click!") }``` **Resultado en consola:** `Click!` por 9 veces.

Carlos Martinez
así como dice davidtoca, no le debes poner parentesis al callback a menos que quieras que se ejecute claro. y tambien se podria probar con
let available = [...available_TEMP] available.map(param => param.addEventListener('click',onClickCase)

David Antonio Ordóñez Cornejo
Así es, cuando se pasa una función como callback se debe hacer como un valor, recordemos que en js las funciones son como cualquier otro tipo de dato y se pueden pasar como argumento. Al ponerle paréntesis estás invocando inmediatamante la función al momento de registrar el evento.

David Toca
cuando haces onclickcase() estas ejecutando inmediatamente el metodo, lo que debes hacer es pasarle la función sin los paréntesis, mandándole la referencia del metodo, asi:
available[0].addEventListener('click', onClickCase)