Ik heb problemen uitdagingen om een js-array op het scherm te tonen. Mijn eerste versie was het concatten van een variabele en deze op het einde via de innerHTML prop. van een div het resultaat te laten tonen. Dit duurde op mijn 2500+ 10 secondes voor 800 objecten. Te lang dus.
Toen stuitte ik op insertAdjacentHTML. Dit duurde nog maar 3 secondes! MAAR:
Mijn tabel is vern**kt veranderd en de styletags worden niet meer gebruikt.
Is dat een behavior van deze functie? Met insertAdjacentText heb ik de text laten printen, deze vervolgens copy paste in dezelfde div gegooid en hiermee kreeg ik wel alles goed. Zie ook het plaatje. Boven fout, onder goed.

Hier mijn JS code:
Iemand een id hoe ik e.e.a. wel goed ga krijgen?
Reden trouwens waarom ik dit wil is dat de tabel dingen bevat die via criteria wel of niet getoond gaan worden. Dit zonder postback o.i.d. dus client side scripting.
Ow en verder staat er een harde waarde in mijn for-loop, maar hiermee kon ik mooi performance testen.
p.s. dit is de insertAdjacentText variant. Ik had de insertAdjacentHTML functie reeds veranderd dat hij 1 rij per keer insertte
p.s.2 Ik heb ook een functie gevonden waarmee insertAdjacentHTML ook werkt in mozilla en NS6, ben me dus bewust van de beperkingen die dit gaf
Toen stuitte ik op insertAdjacentHTML. Dit duurde nog maar 3 secondes! MAAR:
Mijn tabel is vern**kt veranderd en de styletags worden niet meer gebruikt.
Is dat een behavior van deze functie? Met insertAdjacentText heb ik de text laten printen, deze vervolgens copy paste in dezelfde div gegooid en hiermee kreeg ik wel alles goed. Zie ook het plaatje. Boven fout, onder goed.

Hier mijn JS code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| function WriteResults2()
{
// 800 dingen 3 secondes!
var elem = document.getElementById("divResult");
elem.insertAdjacentText("afterBegin","\n<table width='542' border='0' cellspacing='0' cellpadding='0' class='ResultaatBg'>");
var i = 1;
for(var j = 0;j < 2;j++)
{
elem.insertAdjacentText("beforeEnd","<tr><td width='180' rowspan='2' height='25'><a href='default.aspx?m=qua_wa&id="+arObjects[i][OBJID]+"'>[img]'"+MEDIAURL+arObjects[i][FOTOGUID]+"_foto_small.jpg'[/img]</a></td><td width='7' rowspan='2'></td><td width='61' class='ResultaatTekst'><b>NIEUW</b></td><td width='107' class='ResultaatTekst'> "+arObjects[i][PLAATS]+"</td><td width='187' class='ResultaatTekst'> "+arObjects[i][PRIJS]+"</td></tr>");
elem.insertAdjacentText("beforeEnd","<tr><td colspan='3' height='87' valign='top'><br><table cellpadding='0' cellspacing='0' border='0' width='355'><tr>");
elem.insertAdjacentText("beforeEnd","<td class='ResultaatTekst' valign='top' width='258'>"+arObjects[i][OMSCHR]+"</td><td valign='top' width='50'>");
if (arObjects[i][FOTOFLSH] == 'J')
elem.insertAdjacentText("beforeEnd","<a href='#'>[img]'../Styles/Qualis/images/nl/zoeken/icon_flash.gif'[/img]</a>");
else
elem.insertAdjacentText("beforeEnd"," ");
elem.insertAdjacentText("beforeEnd","</td><td valign='top' width='47'>");
if (arObjects[i][FILMFLSH] == 'J')
elem.insertAdjacentText("beforeEnd","<a href='#'>[img]'../Styles/Qualis/images/nl/zoeken/icon_video.gif'[/img]</a>");
else
elem.insertAdjacentText("beforeEnd"," ");
elem.insertAdjacentText("beforeEnd","</td></tr></table></td></tr><tr><td colspan='5' height='1' class='ResultaatSpacer'></td></tr>");
}
elem.insertAdjacentText("beforeEnd","</table>\n");
}
window.onLoad = WriteResults2(); |
Iemand een id hoe ik e.e.a. wel goed ga krijgen?
Reden trouwens waarom ik dit wil is dat de tabel dingen bevat die via criteria wel of niet getoond gaan worden. Dit zonder postback o.i.d. dus client side scripting.
Ow en verder staat er een harde waarde in mijn for-loop, maar hiermee kon ik mooi performance testen.
p.s. dit is de insertAdjacentText variant. Ik had de insertAdjacentHTML functie reeds veranderd dat hij 1 rij per keer insertte
p.s.2 Ik heb ook een functie gevonden waarmee insertAdjacentHTML ook werkt in mozilla en NS6, ben me dus bewust van de beperkingen die dit gaf