Avatar billede -ace Nybegynder
10. marts 2006 - 13:52 Der er 7 kommentarer

Problem med fane system

Hej,

Først undskyld overskriften. Kender ikke så meget til javascript, så viste ikke hvordan jeg skulle beskrive det.

Nå, men jeg har fundet en kode, der gør man får nogle faner i toppen, og kan skifte mellem forskelligt indhold. Det fungere som sådan også ok, men der er én ting jeg savner i det:
At den kan udvide og formindske der, hvor indholdet bliver vist automatisk, for hver fane... Har ingen ide om det er muligt, men jeg kunne godt tænke mig jeg kunne resize hvert vindue, så hvis der er et sted jeg kun skal bruge lidt plads, så er der ikke en million linier neden under der er tomme, fordi næste fane står der meget mere på.

Håber i kan hjælpe!

Her er min kode:

<html>
<head>
<title>Faneblade</title>

<script language="javascript" type="text/javascript">
num = 3 //antal faneblade

function faa(obj)
{
if (document.getElementById){return(eval("document.getElementById('"+obj+"').style"));}
else if (document.all){return(eval("document.all."+obj+".style"));}
else {return(eval("document."+obj+".style"));}
}

function fav(o){
o.style.background = "#FFFFFF"
}
function ufav(o){
if (o.style.zIndex != 4){o.style.background = "#cccccc"}
}
function aktiver(o){
faa("l" + o).zIndex = 3

obj = faa("f" + o)
obj.zIndex = 4
obj.background = "#ffffff"
obj.borderBottom = "0px #FFFFFF solid"
obj.top = 19

    for (i=1;i<=num;i++)
    {
        if (i != o){
        obj = faa("f" + i)
        obj.top=20
        obj.zIndex = 1
        obj.background = "#cccccc"
        obj.borderBottom = "1px #000000 solid"
        faa("l" + i).zIndex=2
        }
    }
}

</script>

<style type="text/css">
body {
background-color:#778899;
}
div.faneblad {
background-color:#cccccc;
position:absolute;
border:1px #000000 solid;
cursor:hand; cursor:pointer;
top:20px;
height:22px;
z-index:1;
}
div.lag {
background-color:#ffffff;
position:absolute;
border:1px #000000 solid;
top:40px;
left:20px;
height:50%;
width:55%;
z-index:2;
}
p.fane {
font-family:verdana;
font-size:12px;
color:#000000;
margin:2px 4px 2px 4px;
text-align:center;
}
</style>

</head>
<body onload="aktiver(1)">

<div class="faneblad" id="f1" style="width:50;left:30;" onmouseover="fav(this)" onmouseout="ufav(this)" onclick="aktiver(1)">
<p class="fane">1</p>

</div>

<div class="faneblad" id="f2" style="width:50;left:85;" onmouseover="fav(this)" onmouseout="ufav(this)" onclick="aktiver(2)">
<p class="fane">2</p>
</div>

<div class="faneblad" id="f3" style="width:70;left:140;" onmouseover="fav(this)" onmouseout="ufav(this)" onclick="aktiver(3)">
<p class="fane">3</p>
</div>

</div>

<div class="lag" id="l1">
1
</div>

<div class="lag" id="l2">
2
</div>

<div class="lag" id="l3">
3
</div>
</body>
</html>
Avatar billede johan.o Nybegynder
10. marts 2006 - 16:29 #1
Et hurtigt bud, det kan optimeres en del, men måske er det hvad du leder efter :

<html>
<head>
<title>Faneblade</title>

<script language="javascript" type="text/javascript">
num = 3 //antal faneblade

function faa(obj)
{
if (document.getElementById){return(eval("document.getElementById('"+obj+"').style"));}
else if (document.all){return(eval("document.all."+obj+".style"));}
else {return(eval("document."+obj+".style"));}
}

function fav(o){
o.style.background = "#FFFFFF"
}
function ufav(o){
if (o.style.zIndex != 4){o.style.background = "#cccccc"}
}
function aktiver(o){
faa("l" + o).zIndex = 3
faa("l" + o).display="block";

obj = faa("f" + o)
obj.zIndex = 4
obj.background = "#ffffff"
obj.borderBottom = "0px #FFFFFF solid"
obj.top = 19

    for (i=1;i<=num;i++)
    {
        if (i != o){
        obj = faa("f" + i)
        obj.top=20
        obj.zIndex = 1
        obj.background = "#cccccc"
        obj.borderBottom = "1px #000000 solid"
        faa("l" + i).zIndex=2
        faa("l" + i).display="none";
        }
    }
}

</script>

<style type="text/css">
body {
background-color:#778899;
}
div.faneblad {
background-color:#cccccc;
position:absolute;
border:1px #000000 solid;
cursor:hand; cursor:pointer;
top:20px;
height:22px;
z-index:1;
}
div.lag {
background-color:#ffffff;
position:absolute;
padding: 5px;
border:1px #000000 solid;
top:40px;
left:20px;
z-index:2;
}
p.fane {
font-family:verdana;
font-size:12px;
color:#000000;
margin:2px 4px 2px 4px;
text-align:center;
}
</style>

</head>
<body onload="aktiver(1)">

<div class="faneblad" id="f1" style="width:50;left:30;" onmouseover="fav(this)" onmouseout="ufav(this)" onclick="aktiver(1)">
<p class="fane">1</p>

</div>

<div class="faneblad" id="f2" style="width:50;left:85;" onmouseover="fav(this)" onmouseout="ufav(this)" onclick="aktiver(2)">
<p class="fane">2</p>
</div>

<div class="faneblad" id="f3" style="width:70;left:140;" onmouseover="fav(this)" onmouseout="ufav(this)" onclick="aktiver(3)">
<p class="fane">3</p>
</div>

</div>

<div class="lag" style="display: none;" id="l1">
1 og en masse tekst og sdjbfsidubfsiud
</div>

<div class="lag" style="display: none;" id="l2">
2 og meget tekst og AFGiaufgiufgisdufg<br>med linie skift
</div>

<div class="lag" style="display: none;" id="l3">
3 endnu mere tekst og piugadfiugsdifugsdif<br>med flere<br>linieskift
</div>
</body>
</html>

Mvh. Johan
Avatar billede -ace Nybegynder
11. marts 2006 - 00:25 #2
Nu har jeg lige tjekket hurtigt, og det er præcis sådan det skal kunne - kanon!
Men, hvis det ikke er for meget, vil du så ikke optimere det der kan, det ville være kanon.
Avatar billede johan.o Nybegynder
11. marts 2006 - 09:48 #3
Jeg tror jeg ville lave det sådan her :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<title>Faneblade</title>

<script type="text/javascript">
ol=false; of=false;

function fav(o) {
o.style.background = "#FFFFFF"; }

function ufav(o) {
if(o.style.zIndex!=3) { o.style.background="#cccccc"; } }

function aktiver(o) {
l=document.getElementById("l"+o).style;
if(l.display=="none") {
  if(ol) { ol.display="none"; }
  l.display="block";
  f=document.getElementById("f"+o).style;
  f.zIndex=3;
  f.background="#FFFFFF";
  f.borderBottom="0px #FFFFFF solid";
  f.top="19px";
  if(of) {
  of.top="20px";
  of.zIndex=1;
  of.background="#CCCCCC";
  of.borderBottom="1px #000000 solid"; }
  ol=l; of=f; } }
</script>

<style type="text/css">
body {
background-color:#778899; }

div.faneblad {
background-color: #CCCCCC;
position: absolute;
border: 1px #000000 solid;
cursor: hand; cursor: pointer;
top: 20px;
height: 22px;
z-index: 1; }

div.lag {
background-color: #FFFFFF;
position: absolute;
padding: 5px;
border: 1px #000000 solid;
top: 40px;
left: 20px;
z-index: 2; }

p.fane {
font-family: verdana;
font-size: 12px;
color: #000000;
margin: 2px 4px 2px 4px;
text-align: center; }
</style>

</head>
<body onload="aktiver(1);">

<div class="faneblad" id="f1" style="width: 50px; left: 30px;" onmouseover="fav(this)" onmouseout="ufav(this)" onclick="aktiver(1)">
<p class="fane">1</p>
</div>

<div class="faneblad" id="f2" style="width: 50px; left: 85px;" onmouseover="fav(this)" onmouseout="ufav(this)" onclick="aktiver(2)">
<p class="fane">2</p>
</div>

<div class="faneblad" id="f3" style="width: 70px; left: 140px;" onmouseover="fav(this)" onmouseout="ufav(this)" onclick="aktiver(3)">
<p class="fane">3</p>
</div>

<div class="lag" style="display: none;" id="l1">
1 og en masse tekst og sdjbfsidubfsiud
</div>

<div class="lag" style="display: none;" id="l2">
2 og meget tekst og AFGiaufgiufgisdufg<br>med linie skift
</div>

<div class="lag" style="display: none;" id="l3">
3 endnu mere tekst og piugadfiugsdifugsdif<br>med flere<br>linieskift
</div>

</body>
</html>

Mvh. Johan
Avatar billede -ace Nybegynder
15. marts 2006 - 09:28 #4
Det virker som det skal, med at den udvider sig selv..

MEN, er det muligt at lave fixed bredde, så den ikke hopper frem og tilbage i bredden, alt efter hvor meget der står?

Tak indtil videre, men håber det sidste også kan klares :)
Avatar billede johan.o Nybegynder
15. marts 2006 - 14:43 #5
Måske sådan her :

div.lag {
width: 500px;
background-color: #FFFFFF;
position: absolute;
padding: 5px;
border: 1px #000000 solid;
top: 40px;
left: 20px;
z-index: 2; }

Mvh. Johan
Avatar billede -ace Nybegynder
16. marts 2006 - 08:54 #6
Prøver jeg, men lige meget hvad, så har du fortjent point. Så hvis du vil, smid et svar :o)
Avatar billede johan.o Nybegynder
16. marts 2006 - 17:02 #7
Jamen det gør jeg da så :)

Du vender bare tilbage hvis det ikke virkede eller der er andet jeg kan hjælpe med :)

Mvh. Johan
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