Sie müssen benannte Funktionen verwenden.
Außerdem muss sich die click
Variable außerhalb des Handlers befinden, um sie zu erhöhen.
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: Sie können die click_counter
Variable folgendermaßen schließen:
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);
Auf diese Weise können Sie den Zähler über mehrere Elemente erhöhen.
Wenn Sie das nicht möchten und jeder einen eigenen Zähler haben soll, gehen Sie folgendermaßen vor:
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 ));
EDIT: Ich hatte vergessen, den Handler zu benennen, der in den letzten beiden Versionen zurückgegeben wurde. Fest.
if(click == 50) {
sollten Referenzen seinif( click === 50 )
oderif( click >= 50 )
- sie werden die Ausgabe nicht ändern, aber aus Gründen der Vernunft sind diese Überprüfungen sinnvoller.