Hallo Thomas,
Ich habe mal einen Test mit 300 td-Zellen gemacht, die im 5-Sekunden-Takt mit Zufallszahlen gefuellt werden: http://www.styleassistant.de/test/zz2table.htm und bewusst einen etwas aelteren Rechner verwendet (200 MHz MMX, 128 MB, W2KSP3).
Ich habe dein Beispiel mal etwas verändert:
----------------------------------------------
<script language="JavaScript" type="text/javascript">
<!--
function init()
{
data=new Array();
for(i=0;i<document.getElementsByTagName("td").length;i++)
data[i]=document.getElementsByTagName("td")[i].firstChild;
}
function ZZ2Table()
{
for(i=0;i<data.length;i++)
{
data[i].nodeValue=Math.round(Math.random()*100000);
}
}
//-->
</script>
</head>
<body onload="init();ZZ2Table();setInterval('ZZ2Table()',5000);">
----------------------------------------------
Bei mir (IE5.5/win98) wird die CPU-Last dadurch deutlich reduziert.
Außerdem habe ich die Erfahrung gemacht, dass man DOM-Zugriffe zum Teil erheblich beschleunigen kann, wenn man die Objekte noch mal im lokalen Scope der Funktion definiert, also z.B:
function ...
var obj=document.getElementsByTagName("td");
var objL=obj.length;
for(i=0;i<objL;i++)
obj[i] ...
Der Effekt fällt umso mehr ins Gewicht, je komplexer der Elementenbaum ist, und ist im IE5 besonders ausgeprägt.
Sogar dieses objL bringt manchmal noch was; sonst wird offenbar bei jedem Schleifendurchlauf die Länge des Arrays wieder neu abgefragt, da sie sich ja geändert haben könnte.
Grüße, Stefan