Avatar billede changman Nybegynder
13. december 2001 - 16:31 Der er 9 kommentarer og
1 løsning

Dynamisk navigation mellem html sider...

Hej Eksperten

Jeg har en række html-sider, som alle skal indeholde en frem og tilbage-knap, der automatisk viser brugeren frem til næste html-dokument i rækken. Jeg har cirka 50 html-filer jeg har kaldt rapport1.htm, rapport2.htm, rapport3.... osv.

Hvis jeg er på rapport3.htm og trykker på næste kan javaScript så ikke automatisk \'gætte\' at den næste side hedder rapport4.htm...

På forhånd tak

///Changman
Avatar billede Slettet bruger
13. december 2001 - 16:33 #1
Jo, men jeg skal bruge noget mere info: Ligger de loadede html-sider i en iframe, og hvad er dens navn, hvis de gør?
Og er det altid den samme side, der starter med at blive loadet, eller er det forskelligt?
Avatar billede Slettet bruger
13. december 2001 - 16:39 #2
Hvis filerne ligger i en iframe kaldet \"minIframe\", så kan scriptet fx se således ud:

<script>
rapportNr = 1;
antalRapporter = 50; //Antallet a rapporter

function skiftSide(retn) {
if (retn == 0 && rapportNr > 1) {
rapportNr--;
side = \"rapport\" + rapportNr + \".htm\";
document.minIframe.location.replace(side);
}
else if (retn == 1 && rapportNr <= antalRapporter) {
rapportNr++;
side = \"rapport\" + rapportNr + \".htm\";
document.minIframe.location.replace(side);
}
</script>

<iframe src=\"rapport1.htm\" name=\"minIframe\" width=\"300\" height=\"200\">Du skal kunne se iframes, hvis du vil se disse rapporter!</iframe>
<br><br><a href=\"#\" onClick=\"skiftSide(0); return false;\">Tilbage</a> | <a href=\"#\" onClick=\"skiftSide(1); return false;\">Frem</a>
Avatar billede changman Nybegynder
13. december 2001 - 16:40 #3
Jeg ved ikke hvad en iframe er???

Index-filen er en indholdsfortegnelse, hvor man kan klikke sig videre til samtlige rapporter. Hvis man fx har valgt rapport47, kommer man ind på rapport47.htm, og fra denne side skal man kunne gå både frem og tilbage til henholdsvis rapport46 og rapport48...

Avatar billede Slettet bruger
13. december 2001 - 16:42 #4
Nårh, nu forstår jeg.
Indeholder adressen til dine filer ikke andre tal end rapport-nummeret (altså: ligger de ikke i en mappe eller på et domæne, der hedder noget med et tal)?
Avatar billede changman Nybegynder
13. december 2001 - 16:42 #5
nååååårrrhh!!!

NEj, Der er ingen frames!!!
Avatar billede changman Nybegynder
13. december 2001 - 16:44 #6
de hedder bare rapport01 til rapportXX, og skal ikke ligges i nogle mapper...
Avatar billede changman Nybegynder
13. december 2001 - 16:45 #7
En standard html side, hvor alt ligger i rod bibloteket...
Avatar billede Slettet bruger
13. december 2001 - 16:51 #8
Ja, men det ville lette programmeringen en hel del, hvis adressen til dine filer fx ikke hed:
www.domaene112.dk/mappe1/under_mappe3/rapport32.html

Men så gør vi det på den besværlige måde:

<script>
loc = self.location.href + \"\";
pos = loc.lastIndexOf(\"rapport\");
rn = parseInt(loc.substr(pos,loc.length));

function skiftSide(retn) {
if (retn == 0 && rn > 1) {
rn--;
side = \"rapport\" + rn + \".htm\";
self.location.href = side;
}
else if (retn == 1) {
rn++;
side = \"rapport\" + rn + \".htm\";
self.location.href = side;
}
}
</script>

<a href=\"#\" onClick=\"skiftSide(0); return false;\">Tilbage</a> | <a href=\"#\" onClick=\"skiftSide(1); return false;\">Frem</a>

Men hvis du ikke kender det præcise antal rapporter, kan man jo til sidst ende på en \"Siden kan ikke findes\", når der ikke er flere \"Fremad\"-muligheder!
Avatar billede changman Nybegynder
13. december 2001 - 16:52 #9
det må den da også gerne hedde hvis det gør det nemmere...
Avatar billede Slettet bruger
13. december 2001 - 21:46 #10
Nåh, men ovenstående skulle virke, og det betyder faktisk kun én linje eller to mere, hvis adressen ikke indeholder andre tal end raport-nummeret, så det kan være ligemeget.

Men som sagt bør du nok skrive, hvor mange rapporter, der er, så man ikke lige pludseligt rammer ind i en \"Siden kan ikke vises\"-side.
Det kan gøres nemt, så der kun skal rettes ét sted, hver gang, der bliver tilføjet en ny rapport, nemlig således:

Nedenstående skal som det eneste stå i en fil kaldet \"rapport.js\":

ar = 50; //Antallet af rapporter!

loc = self.location.href + \"\";
pos = loc.lastIndexOf(\"rapport\");
rn = parseInt(loc.substr(pos,loc.length));

function skiftSide(retn) {
if (retn == 0 && rn > 1) {
rn--;
side = \"rapport\" + rn + \".htm\";
self.location.href = side;
}
else if (retn == 1 && rn < ar) {
rn++;
side = \"rapport\" + rn + \".htm\";
self.location.href = side;
}
}

Så skal du bare indsætte dette på hver rapport-side:

<script src=\"rapport.js\">
</script>

Og derefter bare bruge linkene fra før:

<a href=\"#\" onClick=\"skiftSide(0); return false;\">Tilbage</a> | <a href=\"#\" onClick=\"skiftSide(1); return false;\">Frem</a>

Så behøver du kun rette i \"rapport.js\", hver gang, du tilføjer en rapport!
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