Вам нужно использовать именованные функции.
Кроме того, для увеличения переменная click
должна находиться за пределами обработчика.
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);
РЕДАКТИРОВАТЬ: Вы можете закрыть переменную click_counter
следующим образом:
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);
Таким образом, вы можете увеличить счетчик для нескольких элементов.
Если вы этого не хотите и хотите, чтобы у каждого был свой счетчик, сделайте следующее:
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 ));
РЕДАКТИРОВАТЬ: Я забыл назвать обработчик, возвращаемый в последних двух версиях. Исправлено.
person
user113716
schedule
09.12.2010
if(click == 50) {
должно бытьif( click === 50 )
илиif( click >= 50 )
- они не изменят вывод, но из соображений здравомыслия эти проверки имеют больше смысла. - person rlemon   schedule 15.03.2012