/ / Passar argumento na função do ouvinte de eventos [duplicado] - javascript, html

Passar argumento na função de ouvinte de eventos [duplicado] - javascript, html

Eu quero passar um argumento para a função queestá sendo chamado dentro do ouvinte do evento. O código abaixo mostra o que eu quero fazer, mas não me deixa fazer isso convencionalmente. O que é uma solução para isso?

Código HTML :

<button id="btn">Click Me</button>

Código JavaScript:

<script>
document.getElementById("btn").addEventListener( "click",btnClick(5) );
function btnClick(argument)
{
console.log("Button clicked with argument : " + argument);
}
</script>

Console deve ler:

Button clicked with argument : 5

Obrigado rapazes.

Respostas:

4 para resposta № 1

Com uma função anônima

document.getElementById("btn").addEventListener( "click", function() {
btnClick(5);
}, false );

Se você precisa manter o valor de this você pode usar a chamada ou aplicar

btnClick.call(this, 5);

0 para resposta № 2

O valor de 5 está sempre associado a esse botão? Se sim, você pode fazer:

<script>
var btn = document.getElementById("btn");
btn.tag = 5;

btn.addEventListener( "click",btnClick );

function btnClick()
{
console.log("Button clicked with argument : " + btn.tag);
}
</script>

Ou passe 5 dentro do manipulador btnClick ...