Avatar billede thb Nybegynder
22. januar 2005 - 14:05 Der er 7 kommentarer og
1 løsning

Styring af faneblade / div

Hej alle,

Jeg vil lave nogle faneblad på min side som skal skal vise indholdet af nogle divs...

Tanken er at jeg lave nogle divs:

<div id="generel">Generelt indhold</div>
<div id="sprog" style="display:none;">Sprog indhold</div>

Og så skal jeg lave en generel funktion som kan styre de divs... Altså sætte style.display på de forskellige divs..

Min ide var at lave en funktion som kunne kaldes: faneblad('generel') og så skulle den vise generel, men hvordan skjuler jeg så de andre... ????

Kan jeg på en måde lukke alle fanebladenes div'er og så kun vis det div som bliver kaldt i funktionen ?

Kan man evt. ligge alle div'sne i en div og så noget kode som skjuler alle divs inde i det div... ???

Hmm... Måske en smule forvirrende  forklaret, men håber at I forstår..

Thomas
Avatar billede Slettet bruger
22. januar 2005 - 15:03 #1
Jeg har leget med lidt her, du er velkommen til at bruge hvad du vil. Det kan sagtens laves uden tabeller, men det gik lidt hurtigt :)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
<style>

.withborder {
border-left:1px solid black;
border-top:1px solid black;
}

.withoutborder {
background:#dcdcdc;
border:1px solid black;

}
</style>
<script type="text/javascript">

function vis_billede(handling) {
if(handling=='foer') {
document.getElementById('foer').style.display='block';
document.getElementById('foerknap').style.borderBottom='0px';
document.getElementById('foerknap').style.background='';
document.getElementById('efterknap').style.borderBottom='1px solid black';
document.getElementById('efterknap').style.background='#dcdcdc';
document.getElementById('efter').style.display='none';
} else {
document.getElementById('efter').style.display='block';
document.getElementById('efterknap').style.borderBottom='0px';
document.getElementById('efterknap').style.background='';
document.getElementById('foerknap').style.borderBottom='1px solid black';
document.getElementById('foerknap').style.background='#dcdcdc';
document.getElementById('foer').style.display='none';
}

}

</script>
</head>

<body>

<table class="broedtekst" width="400" cellpadding="0" cellspacing="0" border="0">
<tr><td align="center" width="80" height="20" nowrap class="withborder" id="foerknap" onclick="vis_billede('foer')">&nbsp;FØR&nbsp;</td><td align="center" width="80" height="20" nowrap class="withoutborder" id="efterknap" onclick="vis_billede('efter')">&nbsp;EFTER&nbsp;</td><td style="border-bottom:1px solid #000" width="100%">&nbsp;</td></tr>
</table>
<table width="400" cellpadding="0" cellspacing="0" border="0">
<tr><td align="center" style="border-left:1px solid #000;border-right:1px solid #000;border-bottom:1px solid #000;padding:5px" valign="top">


<div id="foer">
Tekst 1
</div>

<div id="efter" style="display:none">
Tekst 2
</div>
</td></tr>
</table>



</body>
</html>
Avatar billede Slettet bruger
22. januar 2005 - 15:04 #2
onclick funktionen kan også laves mere generisk, f.eks. med noget i stil med det her (sakset fra et virkeligt projekt)

function vis_tab(tabid) {
var i=1
while (eval("document.getElementById('tab" + i + "')")!=null){
document.getElementById('tab'+i).style.border='1px solid red';
document.getElementById('help'+i).style.display='none';

i++
}
if(eval("document.getElementById('tab" + tabid + "')")!=null) {
document.getElementById('tab'+tabid).style.display='block';
document.getElementById('help'+tabid).style.display='block';
}
}
Avatar billede thb Nybegynder
22. januar 2005 - 15:17 #3
Det var ikke helt det jeg havde tænkt.... :D
Det virker, men jeg kan ikke helt se hvordan jeg kan lave det dynamisk... Det skulle gerne være sådan at man bare kaldte det faneblad som man ville have vist og så lukkede den selv resten. Altså så den selv finde ud af hvordan mange faneblade der er ...

Thomas
Avatar billede Slettet bruger
22. januar 2005 - 15:28 #4
Jamen det kan det nederste eksempel også, så længe de hedder f.eks. tab1, tab2, tab3 og help1, help2, og help3

Men hvis det er det med at udskrive dem på skærmen du mener, ja så kan det vel også laves.
Avatar billede thb Nybegynder
22. januar 2005 - 15:37 #5
Super, nu virker det.... :D

Kan du ikke lige smide et svar... :D

Thomas
Avatar billede Slettet bruger
22. januar 2005 - 15:42 #6
Jo med glæde :)
Avatar billede Slettet bruger
22. januar 2005 - 15:50 #7
Takker for point, får du problemer skriver du bare!
Avatar billede roenving Novice
26. januar 2005 - 01:21 #8
>>el_barto

Hvadfor bruger du eval, den er da helt overflødig -- og forøvrigt elendig til simple operationer (da den selvfølgelig skal tage højde for alskens mærkværdigheder !-)

function vis_tab(tabid) {
  var i=1
  while (document.getElementById('tab' + i)){
    document.getElementById('tab'+i).style.border='1px solid red';
    document.getElementById('help'+i).style.display='none';
    i++
  }
  if(document.getElementById('tab' + tabid)) {
    document.getElementById('tab'+tabid).style.display='block';
    document.getElementById('help'+tabid).style.display='block';
  }
}

-- iøvrigt ville jeg selv foretrække en for-løkke på elementer fundet med tagName, men det er mest en smagssag !-)
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