Escribo el siguiente código y se ejecuta el callback sin cumplirse el evento.

Pregunta de la clase:
Alejandro Rodríguez

Alejandro Rodríguez

Pregunta
studenthace 7 años

Có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.
3 respuestas
para escribir tu comentario
    Carlos Martinez

    Carlos Martinez

    studenthace 7 años

    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

    David Antonio Ordóñez Cornejo

    studenthace 7 años

    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

    David Toca

    studenthace 7 años

    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)
Fundamentos de JavaScript 2018

Fundamentos de JavaScript 2018

JavaScript es un lenguaje de programación que se trabaja desde el navegador. Construye programas, conoce el entorno, los condicionales y las estructuras repetitivas. Aprende cuáles son y cómo se declaran las variables y las funciones de JS.

Fundamentos de JavaScript 2018
Fundamentos de JavaScript 2018

Fundamentos de JavaScript 2018

JavaScript es un lenguaje de programación que se trabaja desde el navegador. Construye programas, conoce el entorno, los condicionales y las estructuras repetitivas. Aprende cuáles son y cómo se declaran las variables y las funciones de JS.