Jesper TMedlem sedan nov. 20017 058 inlägg
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
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
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
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
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
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>