Hallo,
für einen Eingabebereich in meiner Anwendung habe ich drei Select Felder die über eine Ajaxkomponente miteinander verbunden sind. Auswahl 1 bestimmt Auswahl 2, Auswahl 2 die Auswahl 3, jeweils durch Datenbankabrufe, jeweils über das onChange / onKeyUp Ereignis angestoßen. Ganz nach Ajax' Natur laufen die Anfragen natürlich unabhängig voneinander, die vom zuständigen PHP Script gelieferten Daten werden per eval() als JS ausgeführt.
Da den Selections ein ---Auswahl--- Listenelement vorangestellt ist, initiere ich als erste von Ajax gelieferte JS Anweisung einen Funktionsaufruf, die das aktuell geänderte Select farbig markiert (theobject wird vorher über getElementsByName () belegt, iNumber ist eine laufende Indexnummer für Ajax 'Ereignisse'), um die Änderung für eine gute halbe Sekunde optisch zu signalisieren:
ajax_basic.js
Das funktionierte auch gut, allerdings löscht ein gesetzter Timeout einen alten, obgleich ich über das Array verschiedene Variablen verwende. Das bedeutet, wenn ich schnell genug aus Select 1 und 2 nacheinander einen Eintrag wähle, wird die background-Farbe nur für das zuletzt geänderte Select zurückgesetzt.
Hat jemand eine Erklärung dafür? Normalerweise können doch mehrere Timeouts zugleich ablaufen, oder?
Zur Zeit lasse ich als Notbehelf den letzten Timeout vom neuen löschen und führe vorher die Rücksetzung des Style's aus, aber lieber wäre mir, eine voneinander unabhängige Funktionsweise.
für einen Eingabebereich in meiner Anwendung habe ich drei Select Felder die über eine Ajaxkomponente miteinander verbunden sind. Auswahl 1 bestimmt Auswahl 2, Auswahl 2 die Auswahl 3, jeweils durch Datenbankabrufe, jeweils über das onChange / onKeyUp Ereignis angestoßen. Ganz nach Ajax' Natur laufen die Anfragen natürlich unabhängig voneinander, die vom zuständigen PHP Script gelieferten Daten werden per eval() als JS ausgeführt.
Da den Selections ein ---Auswahl--- Listenelement vorangestellt ist, initiere ich als erste von Ajax gelieferte JS Anweisung einen Funktionsaufruf, die das aktuell geänderte Select farbig markiert (theobject wird vorher über getElementsByName () belegt, iNumber ist eine laufende Indexnummer für Ajax 'Ereignisse'), um die Änderung für eine gute halbe Sekunde optisch zu signalisieren:
ajax_basic.js
Code:
var aMarks = array ();
...
function MarkDynamic (theobject , iNumber)
{
theobject.style.backgroundColor='#beb';
aMarks[iNumber] = window.setTimeout ('theobject.style.backgroundColor=""' , 600);
}
...
Hat jemand eine Erklärung dafür? Normalerweise können doch mehrere Timeouts zugleich ablaufen, oder?
Zur Zeit lasse ich als Notbehelf den letzten Timeout vom neuen löschen und führe vorher die Rücksetzung des Style's aus, aber lieber wäre mir, eine voneinander unabhängige Funktionsweise.

Kommentar