Hallo,
der Vorschlag wurde dir schon gemacht, die Initialisierung in Teilschritten ausführen:
> xmlDoc.async = false;
> xmlDoc.load(xmlDatei);
> laden = window.setInterval("progress()", 1000);
initial(10);
> // Initialisierungsvorgang der Testeinstellungen
function initial(fortschritt) // strXML
{
switch (fortschritt) {
case 10:
liste_fuellen("fragetitel", "fragetitel", 1, "");
break;
case 20:
liste_fuellen("fragetyp", "fragetyp", 1, "");
break;
// ....
case 80:
liste_fuellen("antwort", "richtig", 2, "richtig");
break;
case 90:
matrix_fuellen();
document.getElementById("ladebalken").style.visibility = "hidden";
document.getElementById("Einstellungen").style.visibility = "visible";
document.Fragenanzahl.VerfuegbarAnzahl.value = AnzahlFragenkatalog();
}
progress(fortschritt);
fortschritt+=10;
if (fortschritt < 100) setTimeout(function() {initial(fortschritt);},50);
}
dann lässt sich der Code noch optimieren, indem du lokale Variablen als Referenz auf die select-Elemente nutzt.
> function liste_fuellen(xml_tag, liste, typ, attribut)
> {
> var xml_element = xmlDoc.getElementsByTagName(xml_tag);
> var anzahl_elemente=xml_element.length;
var select=parent.teststeuerung.document.getElementById(liste);
>
> for (var i=0;i<anzahl_elemente;i++)
> {
> var element = xml_element[i];
> for (j=0;j<element.childNodes.length;j++)
> {
// macht das Sinn, immer element.firstChild nehmen?
> var inhalt = element.firstChild.nodeValue;
> if (typ==2)
> {
> var attributeValue = element.getAttribute(attribut);
> var inhalt = attributeValue;
> }
var NeuerEintrag = new Option(inhalt, inhalt, false, true);
select.options[select.options.length] = NeuerEintrag;
> }
> }
Gruß plan_B
--
*®*´¯`·.¸¸.·
*®*´¯`·.¸¸.·