Alles, was ich versuche ist, eine Zahl zu erhöhen, die in einer Box mit 1 angezeigt wird, und dies alle 100 ms zu tun, solange die Maus gedrückt ist. Die Funktion wird ausgeführt, aber niemals mehr als einmal, egal wie lange die Maus gedrückt gehalten wird. Es erhöht die Variable nur jedesmal um 1, wenn ein mousedown -Ereignis für dieses Element vorliegt, und ich kann das in der Box sehen, während ich sehen wollte, dass die Zahl schnell ansteigt, solange die Maus unten bleibt. Gibt es Code für das MouseUp-Ereignis, das das MouseDown-Ereignis daran hindern würde, die Funktion in setTimeout weiter auszuführen oder gibt es eine Regel, die ich vermisse? Seltsam.SetTimeout wird nur einmal beim Mousedown ausgeführt
var mouseDownCount = 0;
$("#addButton").mousedown(function() { startMouseCount(); });
function startMouseCount() {
$("mouseCount").html(mousedownCount)
mdcTimer = window.setTimeout(function() {
mousedownCount++;
$("#mouseCount").html(mousedownCount);
}, 100);
return false;
}
SetTimeout nicht von Natur aus zu wiederholen. setInterval tut – Taplar
Verwenden Sie setInterval für diesen Job –
Oder rufen Sie die gleiche Funktion rekursiv. Ja, du hast recht, das habe ich vermisst. Kann jemand das als Antwort geben, damit ich es als akzeptiert markieren kann? Ich habe gerade eine Zeile hinzugefügt, wo es sich selbst nennt und es funktioniert. Ich habe andere Funktionen, die es anderswo anhalten, so dass es sich nicht selbst stoppen muss. – Bobh