plan_B: Ladebalken funktioniert nur mit alert()-Meldung

Beitrag lesen

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

--
     *®*´¯`·.¸¸.·