您需要使用命名函数。
同样,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 ));
编辑: 我忘记了命名在最后两个版本中返回的处理程序。固定。
if(click == 50) {应该是if( click === 50 )或if( click >= 50 )-他们不会改变输出,但理智原因,这些检查更有意义。