artnat: js auf Internet Explorer

Beitrag lesen

Hallo Jürgen
 hier der Code:

i läuft von 0 bis ca. 3740
j läuft von 0 bis zu einer Zahl zwischen 2 und 300.

Dieser Code läuft auf Iexplore langsam:

  
   for (i=1 ; i<llis; i++ )  
      {  
	for (j=0 ; j<document.getElementsByTagName("h1").length; j++)  
         {  
             if (liste[i]==document.getElementsByTagName("h1")[j].firstChild.data)  
             {  
                 document.writeln("<div id=\"v-briefeintrag\"><a href=\"..\/briefe\/" + liste[i] + ".htm\">" + document.getElementsByTagName("h2")[j].firstChild.data + "<\/a><\/div>")  
                 document.writeln("<div id=\"v-inhalt\">" + document.getElementsByTagName("h3")[j].firstChild.data + "<\/div>")  
             }  
          }  
      }

Dieser Code läuft etwa 4 mal so schnell:

  
   for (j=0 ; j<document.getElementsByTagName("h1").length; j++)  
      {  
      	for (i=1 ; i<llis; i++ )  
         {  
             if (liste[i]==document.getElementsByTagName("h1")[j].firstChild.data)  
             {  
                 document.writeln("<div id=\"v-briefeintrag\"><a href=\"..\/briefe\/" + liste[i] + ".htm\">" + document.getElementsByTagName("h2")[j].firstChild.data + "<\/a><\/div>")  
                 document.writeln("<div id=\"v-inhalt\">" + document.getElementsByTagName("h3")[j].firstChild.data + "<\/div>")  
             }  
          }  
      }  

Auf den anderen Browsern kann ich den Unterschied nicht gut messen, weil die Zeiten immer bei wenigen Sekunden liegen.
Ich weiß jetzt auch den Grund für den Unterschied. Es ist die immer wieder neue Auswertung der Obergrenze von j als document.getElementsByTagName("h1").length. Wenn ich diesen Wert vor der Schleife einer Variablen übergebe, sind beide Codeversionen gleich schnell.

Vielen Dank für die Diskussion, Finish, artnat