Frage

Hintergrund:
Ich habe eine Funktion, dass beim Aufruf der Auswahlliste in einem Formular erstellt und füllt es. Danach wird das Skript ausgeführt wird durch die Optionen in der Liste aus und sucht nach einem bestimmten Wert. Wenn der Wert ist, ‚wählt‘ das Skript diese Option.
Problem:
Da die Liste dynamisch erstellt und ist manchmal sehr groß ist, dauert es eine Weile zu laden. Wenn dies geschieht, der zweite Teil des Skripts (der Teil, der eine Option auswählt), tut nichts, weil die Auswahlliste Zeit zum Laden nicht gehabt hat.
Idee für eine Lösung:
Was wäre schön, ist der zweite Teil der Funktion aufzurufen (als separate Funktion) in einem Onload-Ereignis für die Auswahlliste. Aber Auswahllisten sollen nicht ein onload Attribut haben. Die andere Idee ist, einfach eine Verzögerung hinzuzufügen, aber einen Tag kann die Verzögerung nicht lang genug sein.
Vielen Dank im Voraus für jede Hilfe

War es hilfreich?

Lösung 4

Ok, ich habe feste schließlich das Problem. Die Lösung war ganz anders als das, was hier diskutiert. Im Grunde war ich ‚neue Option (Wert, Text)‘ hinzufügen Optionen auf meine Liste. Ich landete in einer if-Anweisung zu werfen und wenn ein Wert gleich, was ich verwende, benötigten neue Option (Wert, Text, true). und dass das Problem gelöst. Alle in der Arbeit eines Tages.

Andere Tipps

eine Verzögerung zu verwenden ist nicht zuverlässig. Was auch immer Sie mit der Auswahlliste füllen sollte die Funktion direkt aufrufen, wenn es fertig ist.

abwechselnd:

Da es keine „onload“ -Ereignis für die select alle ist, können Sie wirklich eine Funktion haben, die sich nach einem Timeout aufruft. Wenn die Länge der Elemente in der Auswahlliste wird von Null geändert, wissen Sie etwas derzeit das Hinzufügen von Elementen (den Startpunktes). Wenn der Startpunkt erreicht ist und nichts hat sich nach der nächsten Timeout geändert haben, können Sie davon ausgehen, Gegenstände aufgehört haben wird in die Liste aufgenommen, so können Sie dann die zweite Funktion ausgeführt werden.

Wie geht es Ihnen Ihre AJAX-Aufruf? Die meisten AJAX-Bibliotheken werden den Mechanismus bieten einen Rückruf auf dem erfolgreichen Abschluss zu tun. Zum Beispiel in jQuery:

$("#myList").load("ajax.url", function(){
   //your content has been loaded, so you can do your selection logic here
});

Wenn Sie die Ajax-Antwort manuell sind Handhabung und den Aufbau Ihrer Liste in Javascript, dann sind Sie bereits Code haben, der weiß, wann die Liste fertig ist, so können Sie einfach die Auswahl Teil tun, wenn das fertig ist und nicht als eine separate Funktion (wie als zyeming vorgeschlagen hat).

Wenn das auch nicht hilft, könnte es sich lohnen, einen Code zu veröffentlichen, damit die Menschen Sie präziser Antwort geben kann.

Warum Sie nicht die Funktion machen die Option, um eine Callback-Funktion auswählt. Es wird Anruf am Ende der Funktion sein, die die Liste erstellt. Z.

function createList(onComplete) {
// Create the list and maybe other tasks
onComplete();
}

Hinweis: vielleicht nicht so sein, aber ich denke, Sie auf die Idee haben ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top