Avatar billede mik789 Nybegynder
15. maj 2002 - 08:44 Der er 8 kommentarer og
1 løsning

ABC'en for tabelfremstilling med javascript

Jeg har brug for at få fat i ABC'en mht brugen af arrays til fremstilling af tabeller med javascript.

Hvordan laver man f.eks. en simpel tabel med 4 rækker og 2 kolonner der indeholder 4 fornavne i 1. kolonne og de tilsvarende 4 efternavne i den 2. kolonne? Jeg har forsøgt mig med to arrays (fornavn og efternavn), men jeg går kludder i mine for loops, så det bliver forkert.
Avatar billede rune_c Nybegynder
15. maj 2002 - 09:11 #1
du kunne gøre noget i retningen af:

<script language="JavaScript">

var fornavn = new Array;
var efternavn = new Array;

fornavn[0] = "Første";
fornavn[1] = "Anden";
fornavn[2] = "Tredie";
fornavn[3] = "Fjerde";

efternavn[0] = "Første";
efternavn[1] = "Anden";
efternavn[2] = "Tredie";
efternavn[3] = "Fjerde";

for (var i = 0; i < fornavn.length; i++){
  alert(fornavn[i] +" "+ efternavn[i]);
}

</script>

eller:

<script language="JavaScript">

var col = new Array;

col[0] = new Array("For1", "Efter1");
col[1] = new Array("For2", "Efter2");
col[2] = new Array("For3", "Efter3");
col[3] = new Array("For4", "Efter4");

for (var i = 0; i < col.length; i++) {
    alert(col[i][0] +" "+ col[i][1])
}

</script>
Avatar billede mik789 Nybegynder
15. maj 2002 - 09:27 #2
rune c> takker. jeg kunne bruge dit første forslag som jeg oversatte til tabelkode sådan:

<script type="text/javascript">

fornavn = new Array ("Peter", "Søren", "Mikkel", "Ole");
efternavn = new Array ("Sørensen", "Mortensen", "Brage", "Andersen");

document.write ('<table border="1">');
for (i=0; i<fornavn.length; i++) {
  document.write ('<tr><td>'+fornavn[i]+'</td><td>'+efternavn[i]+'</td></tr>');
}
document.write ('</table>');

</script>

og det virker præcis som det skal. jeg havde problemer fordi jeg lave TO for loops, én til fornavn arrayet, og én til efternavn arrayet - ligesom man gør i todimensionale arrays (som f.eks. giver en multiplikationstabel). så jeg var i tvivl om hvordan man bare føjer array oplysningerne i "efternavn" til array oplysningerne i "fornavn".
Avatar billede jakoba Nybegynder
15. maj 2002 - 09:28 #3
Det er ofte en fordel at opdele sådan noget i 2 eller flere funktioner:

var navne = new Array (
    new Array ( 'Jens', "hansen" ),
    new Array ( 'Keld Ole', "hansen" ),
    new Array ( 'Hans', "Hansen" ),
    new Array ( 'Marianne', "Jensen" ) // ikke , efter sidste
                        ]
function skrivTabel( inpArr ) {
    var linier = new Array ();
    var lIndex = 0;
    linier[lIndex++] = "<table>";
    for (var i=0; i<inpArr[0].length; i++ ) {
        linier[lIndex++] = "  <tr>";
        for (var j=0; j<inpArr.length; j++ ) {
            linier[lIndex++] = "    <td>"+inpArr[i][j]+"</td>";
        }
        linier[lIndex++] = "  </tr>";
    }
    linier[lIndex++] = "</table>";
    document.write( linier.join( "\n" );
}; //end skrivTabel( 2D-array )

mvh JakobA
Avatar billede mik789 Nybegynder
15. maj 2002 - 09:37 #4
jakoba> jeg har prøvet dit script, men det giver nogle fejl. én er at ] i linje 6 skal være ), men der er også noget med næstsidste linje hvor der vist skal være en ) mere. men selv da, får jeg kun et tomt dokument ...?
Avatar billede mik789 Nybegynder
15. maj 2002 - 09:45 #5
nååhh ja men det er jo også kun en funktion du har skrevet, og den skal seføli kaldes nede i dokumentet - prøver lige
Avatar billede jakoba Nybegynder
15. maj 2002 - 09:46 #6
Jep, og udover at der er fejl i har jeg misforstået opgaven :( skriver fornavn OVER efternavn.
Avatar billede jakoba Nybegynder
15. maj 2002 - 09:52 #7
Der var FOR mange fejl:

var navne = new Array (
    new Array ( 'Jens', "hansen" ),
    new Array ( 'Keld Ole', "hansen" ),
    new Array ( 'Hans', "Hansen" ),
    new Array ( 'Marianne', "Jensen" ) // ikke , efter sidste
                        );

function skrivTabel( inpArr ) {
    var linier = new Array ();
    var lIndex = 0;
    linier[lIndex++] = "<table>";
    for (var i=0; i<inpArr.length; i++ ) {
        linier[lIndex++] = "  <tr>";
        for (var j=0; j<inpArr[0].length; j++ ) {
            linier[lIndex++] = "    <td>"+inpArr[i][j]+"</td>";
        }
        linier[lIndex++] = "  </tr>";
    }
    linier[lIndex++] = "</table>";
    document.write( linier.join( "\n" );
}; //end skrivTabel( 2D-array )
Avatar billede mik789 Nybegynder
15. maj 2002 - 09:55 #8
jakoba> hvad med næstsidste linje? mangler der ikke en ) i:

document.write( linier.join( "\n" );
Avatar billede jakoba Nybegynder
15. maj 2002 - 10:24 #9
Jo det gør der.
  document.write( linier.join( "\n" ) );
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester