Você precisa usar funções nomeadas.
Além disso, a click
variável precisa estar fora do manipulador para incrementar.
var click_count = 0;
function myClick(event) {
click_count++;
if(click_count == 50) {
// to remove
canvas.removeEventListener('click', myClick);
}
}
// to add
canvas.addEventListener('click', myClick);
EDIT: Você pode fechar em torno da click_counter
variável assim:
var myClick = (function( click_count ) {
var handler = function(event) {
click_count++;
if(click_count == 50) {
// to remove
canvas.removeEventListener('click', handler);
}
};
return handler;
})( 0 );
// to add
canvas.addEventListener('click', myClick);
Dessa forma, você pode incrementar o contador em vários elementos.
Se você não quer isso e deseja que cada um tenha seu próprio contador, faça o seguinte:
var myClick = function( click_count ) {
var handler = function(event) {
click_count++;
if(click_count == 50) {
// to remove
canvas.removeEventListener('click', handler);
}
};
return handler;
};
// to add
canvas.addEventListener('click', myClick( 0 ));
Edição: Eu tinha esquecido de nomear o manipulador sendo retornado nas duas últimas versões. Fixo.
if(click == 50) {
devem serif( click === 50 )
ouif( click >= 50 )
- elas não mudarão a saída, mas por razões de sanidade essas verificações fazem mais sentido.