Wieso werden die Werte im array nicht richtig aktualisiert?

1 Antwort

Es scheint, dass das Problem von der Art und Weise herrührt, wie das Event-Modell von JavaScript funktioniert. JavaScript ist single-threaded, das heißt, es kann immer nur eine Aufgabe zur selben Zeit erledigen. Wenn Sie das keyup-Event auslösen und dann schnell zu einem anderen Eingabefeld wechseln, bevor das keyup-Event beendet wurde, kann es passieren, dass das erste Event nicht vollständig abgeschlossen wurde, bevor das zweite Event beginnt.

Ein weiterer Punkt ist, dass das keyup-Event ausgelöst wird, wenn der Benutzer eine Taste loslässt. Wenn der Benutzer also zu schnell zwischen den Eingabefeldern wechselt, könnte das Event für das erste Feld möglicherweise erst ausgelöst werden, nachdem der Fokus bereits auf das zweite Feld verschoben wurde. Das könnte erklären, warum einige Änderungen ignoriert werden.

Eine mögliche Lösung könnte sein, anstelle des keyup-Events das change-Event oder das input-Event zu verwenden. Das change-Event wird ausgelöst, wenn der Benutzer die Eingabe abgeschlossen hat (z.B. wenn das Eingabefeld den Fokus verliert), und das input-Event wird jedes Mal ausgelöst, wenn der Wert des Eingabefelds geändert wird. Das könnte helfen, sicherzustellen, dass alle Änderungen korrekt erfasst werden, auch wenn der Benutzer schnell zwischen den Eingabefeldern wechselt. 

Beachten Sie jedoch, dass das Verhalten des change-Events von der Art des Eingabefelds abhängen kann und dass das input-Event in einigen älteren Browsern nicht unterstützt wird. Sie sollten also testen, ob diese Lösung in Ihrem speziellen Anwendungsfall funktioniert.

Die Verwendung des input-Events könnte etwa so aussehen:

```javascript

e.addEventListener("input", e => {

  // Ihr Code hier

})

```

Hoffentlich hilft das bei der Lösung Ihres Problems. Wenn nicht, könnte es hilfreich sein, das genaue Verhalten und die genauen Anforderungen Ihrer Anwendung noch genauer zu betrachten, um die beste Lösung zu finden.


The2nd 
Fragesteller
 15.06.2023, 21:25

Vielen vielen Dank!

0