Avatar billede clausn Nybegynder
29. december 2004 - 17:58 Der er 8 kommentarer og
1 løsning

Prob. med Array opdelt i kolonner

Hej eksperter,

jeg sidder og roder med nedenstående kode. Mit prob. er at jeg nok har stirret mig blind på hvordan jeg opdeler resultatet i 2 kolonner (via en variabel).

Det er en relativ lang liste som jeg gerne vil have sat lidt pænt op...

Desuden er det ikke muligt at lave lidt om på mit Array. Jeg tænker lidt på følg.:

indhold = new Array();
indhold[0] = "Forside|pdf|filnavn.html";

HTML koden er som følg.:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>Untitled</title>
</head>
<body>
<script language="JavaScript">
        menu = new Array();
        menu[0] = "Forside";
        menu[1] = "Referencer";
        menu[2] = "Profil";
        menu[3] = "Kontakt";
       
        href = new Array();
        href[0] = "default.htm";
        href[1] = "referencer.htm";
        href[2] = "profil.htm";
        href[3] = "kontakt.htm";

    billede = new Array();
    billede[0] = "html";
    billede[1] = "pdf";
    billede[2] = "word";
    billede[3] = "ppt";
</script>

<table>
    <tr>
        <script language="JavaScript">
        antalkolonner = 2;
        n = -1;
        while (n < menu.length-1)
        {     
        n++;
            strTekst = "<td>";
            strTekst += "<table border='1' width='100%'>";
            strTekst += "  <tr>";
            strTekst += "    <td width='10%' rowspan='2'><img src='/img/menu/" + billede[n] +".gif' border=0</td>";
            strTekst += "    <td width='90%'>" + menu[n] +"</td>";
            strTekst += "  </tr>";
            strTekst += "  <tr>";
            strTekst += "    <td width='90%'><a href='" + href[n] + "'>Læs mere her</a></td>";
            strTekst += "  </tr>";
            strTekst += "  <tr>";
            strTekst += "    <td width='100%' colspan='2'>denne tekst står under den anden</td>";
            strTekst += "  </tr>";
            strTekst += "</table>";
            strTekst += "<td>";

            if (n >= antalkolonner) {
                strTekst += "<tr><td></td></tr>";
            }

            document.write(strTekst);
        }
        </script>
    </tr>
</table>
</body>
</html>

Hilsen
Claus
Avatar billede roenving Novice
30. december 2004 - 11:13 #1
Hvad er det, du vil opnå ?-)

Selv om det er lidt krøllet kode udskriver den vel en tabel, selvom det godt nok ser mærkeligt ud, at du ikke sætter <tr></tr> for hver iteration !-)

-- med det krøllede mener jeg din 'kunstige' for-then konstruktion, som kunne gøres lettere med en almindelige for-løkke ...

-- og hvad er det, du bruger antalkolonner til (den laver jo bare en mellemrumsRÆKKE ?-)

Måske sådan:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>Untitled</title>
</head>
<body>
<script language="JavaScript">
        menu = new Array();
        menu[menu.length] = "Forside";
        menu[menu.length] = "Referencer";
        menu[menu.length] = "Profil";
        menu[menu.length] = "Kontakt";
       
        href = new Array();
        href[href.length] = "default.htm";
        href[href.length] = "referencer.htm";
        href[href.length] = "profil.htm";
        href[href.length] = "kontakt.htm";

    billede = new Array();
    billede[billede.length] = "html";
    billede[billede.length] = "pdf";
    billede[billede.length] = "word";
    billede[billede.length] = "ppt";
</script>

<table>
        <script language="JavaScript">
        antalkolonner = 2;
        for(i=0;i<menu.length;i++)
        {
            strTekst = "</tr><tr><td>";
            strTekst += "<table border='1' width='100%'>";
            strTekst += "  <tr>";
            strTekst += "    <td width='10%' rowspan='2'><img src='/img/menu/" + billede[i] +".gif' border=0</td>";
            strTekst += "    <td width='90%'>" + menu[i] +"</td>";
            strTekst += "  </tr>";
            strTekst += "  <tr>";
            strTekst += "    <td width='90%'><a href='" + href[i] + "'>Læs mere her</a></td>";
            strTekst += "  </tr>";
            strTekst += "  <tr>";
            strTekst += "    <td width='100%' colspan='2'>denne tekst står under den anden</td>";
            strTekst += "  </tr>";
            strTekst += "</table>";
            strTekst += "<td>";

            document.write(strTekst.substring(5));
        }
        </script>
    </tr>
</table>
</body>
</html>
Avatar billede clausn Nybegynder
30. december 2004 - 15:13 #2
Hejsa,

Det jeg gerne vil opnår er, hvis jeg fx har 9 punkter i mit Array at det kommer til at stå sådan her:
x x
x x
x x
x x
x

i stedet for
x
x
x
x
x
x
x
x
x

Godt nytår :-)
Avatar billede roenving Novice
30. december 2004 - 15:31 #3
Aha ...

Måske sådan:

        <script language="JavaScript">
        antalkolonner = 2;
        for(i=0;i<menu.length;i+=antalkolonner)
        {
            strTekst = "</tr><tr>";

            for(j=i;i+antalkolonner>j;j++){
                if(j>menu.length)strTekst += "<td>&nbsp</td>"
                else{
                    strTekst += "<td>";
                    strTekst += "<table border='1' width='100%'>";
                    strTekst += "  <tr>";
                    strTekst += "    <td width='10%' rowspan='2'><img src='/img/menu/" + billede[j] +".gif' border=0</td>";
                    strTekst += "    <td width='90%'>" + menu[j] +"</td>";
                    strTekst += "  </tr>";
                    strTekst += "  <tr>";
                    strTekst += "    <td width='90%'><a href='" + href[j] + "'>Læs mere her</a></td>";
                    strTekst += "  </tr>";
                    strTekst += "  <tr>";
                    strTekst += "    <td width='100%' colspan='2'>denne tekst står under den anden</td>";
                    strTekst += "  </tr>";
                    strTekst += "</table>";
                    strTekst += "</td>";
                }
            }

            document.write(strTekst.substring(5));
        }
        </script>
Avatar billede clausn Nybegynder
30. december 2004 - 16:58 #4
roenving: Lige præcis... men - hvis der er et ulige antal felter (jeg har testet med 9) skriver den "undefined" i det 10'ende felt.

Kunne man gøre dette kortere?
<script language="JavaScript">
        menu = new Array();
        menu[0] = "Forside";
        menu[1] = "Referencer";
        menu[2] = "Profil";
        menu[3] = "Kontakt";
       
        href = new Array();
        href[0] = "default.htm";
        href[1] = "referencer.htm";
        href[2] = "profil.htm";
        href[3] = "kontakt.htm";

    billede = new Array();
    billede[0] = "html";
    billede[1] = "pdf";
    billede[2] = "word";
    billede[3] = "ppt";
</script>

Så det fx. blev:
<script language="JavaScript">
indhold = new Array();
indhold[0] = "Forside|pdf|filnavn.html";
indhold[1] = "Forside2|pdf|filnavn2.html";
indhold[2] = "Forside3|pdf|filnavn3.html";
indhold[3] = "Forside4|pdf|filnavn4.html";
indhold[4] = "Forside5|pdf|filnavn5.html";
</script>
Avatar billede roenving Novice
30. december 2004 - 17:03 #5
Så skal det nok være:

                if(j>=menu.length)strTekst += "<td>&nbsp</td>"

-- og den anden kan du godt bruge, og så skal du:

              if(j>=menu.length)strTekst += "<td>&nbsp</td>"
                else{
                    txt = indhold[j].split("|");
                    strTekst += "<td>";
                    strTekst += "<table border='1' width='100%'>";
                    strTekst += "  <tr>";
                    strTekst += "    <td width='10%' rowspan='2'><img src='/img/menu/" + txt[1] +".gif' border=0</td>";
                    strTekst += "    <td width='90%'>" + txt[0] +"</td>";
                    strTekst += "  </tr>";
                    strTekst += "  <tr>";
                    strTekst += "    <td width='90%'><a href='" + txt[2] + "'>Læs mere her</a></td>";
                    strTekst += "  </tr>";
                    strTekst += "  <tr>";
                    strTekst += "    <td width='100%' colspan='2'>denne tekst står under den anden</td>";
                    strTekst += "  </tr>";
                    strTekst += "</table>";
                    strTekst += "</td>";
                }
Avatar billede clausn Nybegynder
30. december 2004 - 23:57 #6
Tester lige i morgen når jeg er lidt mere frisk :-)
Avatar billede clausn Nybegynder
01. januar 2005 - 18:12 #7
roenving: Det spiller max... Hvis du vil have nogle points, så lav et svar :o)
Avatar billede roenving Novice
02. januar 2005 - 01:07 #8
Velbekomme '-)
Avatar billede roenving Novice
04. januar 2005 - 00:45 #9
-- og tak for point ;~}
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