webForumDet fria alternativet

Sidan blir blank?

5 svar · 293 visningar · startad av Jesper T

Jesper TMedlem sedan nov. 20017 058 inlägg
#1

Varför blir sidan blank när jag försöker att populera tabellen?

...
<head>
<script language="JavaScript" type="text/javascript">
var populate = new Array(6);
for(var n=0;n<populate.length;n++){
	populate[n] = new Array();
}

populate[0]="-- visa --||";
populate[1]="65|Arne|Olle";
populate[2]="3|svenne|åsa";
populate[3]="76|bengan|britta";
populate[4]="33| |Olle";
populate[5]="67|tom|dsd"; 
</script>
</head>
<body>
Text och annat.
<script> 
window.onload= function showpopulate(){

    document.write("<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">");
	
	document.foo.underpopulate.length=populate.length;
	for(var n=0;n<populate.length;n++){
		document.write("<tr><td>"+populate[n].split("|")[2]+"</td></tr>");

	}

    document.write("</table>");
}
</script>
Text och annat.
</body>
dAEkMedlem sedan feb. 20041 777 inlägg
#2

Min teori är att det beror på hur Mozilla fungerar. [har inte testat andra browsers]

När sidan laddats körs funktionen som sriver ett nytt dokument som börjar med <table border="1"... osv>
När scriptet sedan kommer till for-loopen känner den inte igen variabeln populate eftersom den inte längre är i samma 'scope' [den defineras utanför det nya dokumentet, dvs utanför funktionen showpopulate()].
Detta i sig genererar ett felmeddelande som säger precis detta; att populate inte finns i stort sett., och scriptet avbryts.
Jag kan ha helt fel i min teori så lita inte på att det jag skriver verkligen stämmer. :)
[ngn som känner att den har en mer korrekt förklaring får gärna rätta mig om jag har fel, jag är på hal is!]

En DOM-lösning vore kanske bättre ? [men då faller äldre webläsare bort]

nitro2k01Medlem sedan aug. 20037 630 inlägg
#3

Du kan inte använda document.write efter att sidan laddats (Vilket du uttryckligen gör eftersom den ligger i window.onload). Pröva att lägga den i en enkel script-tagg.
Annars måste du använda innerHTML. Här finns info om hur man kan få det att funka i Mozilla http://webfx.eae.net/dhtml/mozInnerHTML/mozInnerHtml.html

Jesper TMedlem sedan nov. 20017 058 inlägg
#4

Jag skall inte ha det i mozilla. Varför tror ni det?

Pröva att lägga den i en enkel script-tagg.

Hur menar du?

JojoxxMedlem sedan juni 20004 306 inlägg
#5

Jesper T skrev:

Pröva att lägga den i en enkel script-tagg.

Hur menar du?

M.a.o. ta bort window.onload= function showpopulate(){
och den sista } :)

Jesper TMedlem sedan nov. 20017 058 inlägg
#6

Jag fattade det till slut. :) :)

<script language="JavaScript" type="text/javascript">
var populate = new Array(6);
for(var n=0;n<populate.length;n++){
	populate[n] = new Array();
}
populate[0]="-- visa --||";
populate[1]="65|Arne|Olle";
populate[2]="3|svenne|åsa";
populate[3]="76|bengan|britta";
populate[4]="33| |Olle";
populate[5]="67|tom|dsd"; 
</script>
</head>
<body>
Text och annat.
<script> 
document.write("<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">");
	for(var n=0;n<populate.length;n++){
		document.write("<tr><td>"+populate[n].split("|")[2]+"</td></tr>");

	}
document.write("</table>");
</script>
Text och annat.
</body>
Genererad på 368 ms · cache AV · v20260730165559-full.f96bc7eb