Musisz użyć nazwanych funkcji.
Ponadto click
zmienna musi znajdować się na zewnątrz procedury obsługi, aby można ją było zwiększać.
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);
EDYCJA: Możesz zamknąć click_counter
zmienną w ten sposób:
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);
W ten sposób możesz zwiększyć licznik na kilka elementów.
Jeśli tego nie chcesz i chcesz, aby każdy z nich miał swój własny licznik, zrób to:
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 ));
EDYCJA: zapomniałem nazwać handlera zwracanego w ostatnich dwóch wersjach. Naprawiony.
if(click == 50) {
powinny byćif( click === 50 )
lubif( click >= 50 )
- nie zmienią wyniku, ale ze względów rozsądku te sprawdzenia mają więcej sensu.