Avatar billede hansgeist Nybegynder
29. oktober 2003 - 16:12 Der er 5 kommentarer

Hvordan får jeg indhold til først at loade "når jeg siger til"

Hej. Jeg har lavet en side med en del indhold på. Det meste har jeg gemt så brugeren ikke ser det ved første øjekast. Jeg bruger en funktion til det der hedder:

function P7_swapClass: (se indholdet af den længere nede) 

På denne måde:

<a href="#" onClick="P7_swapClass(1,'test','showit','hideit','div')">Test</a>
<div class="hideit" id="test">
<p>bla, bla, bla</p>
</div>

Indholdet af min dig tag id=test bliver synligt når brugeren klikker på linket. Hvordan får jeg det indhold til også først at loade når brugeren klikker?

Her er funktionen som benyttes:

function P7_swapClass(){ //v1.4 by PVII
var i,x,tB,j=0,tA=new Array(),arg=P7_swapClass.arguments;
if(document.getElementsByTagName){for(i=4;i<arg.length;i++){tB=document.getElementsByTagName(arg[i]);
  for(x=0;x<tB.length;x++){tA[j]=tB[x];j++;}}for(i=0;i<tA.length;i++){
  if(tA[i].className){if(tA[i].id==arg[1]){if(arg[0]==1){
  tA[i].className=(tA[i].className==arg[3])?arg[2]:arg[3];}else{tA[i].className=arg[2];}
  }else if(arg[0]==1 && arg[1]=='none'){if(tA[i].className==arg[2] || tA[i].className==arg[3]){
  tA[i].className=(tA[i].className==arg[3])?arg[2]:arg[3];}
  }else if(tA[i].className==arg[2]){tA[i].className=arg[3];}}}}
}

Venligst
HansGeist
Avatar billede roenving Novice
30. oktober 2003 - 14:19 #1
Du kan ikke med den konstruktion forhindre at indholdet loader !-)

Hvis du vil have noget til først at loade, når du 'siger til' skal det først adresseres på det tidspunkt, dvs. du skal have en iframe, som du så sætter .src på ...

Forøvrigt er det _aldrig_ en god ide at udskifte classes på tags i dokumentet, da browseren hver eneste gang, du udskifter en klasse, skal genberegne _hele_ sit css DOM-træ ...

Med ovenstående script kan det blive mange gange ved een aktivering !o]
Avatar billede hansgeist Nybegynder
31. oktober 2003 - 09:27 #2
Tak for det.

Har du en god løsning på det problem? Hvordan ville scriptet se ud hvis det skulle anvende en <iframe> i stedet for en <div>.

Jeg kan ikke lige se anden løsning end at bruge en class skifter til dette formål for der vil jo være op til 20 tilfælde af en sådan funktion på en enkelt side så det går jo ikke at bruge en ID. Eller har du noget helt andet i tankerne som jeg slet ikke kan forestille mig. Hvad?

Mange hilsner
HansGeist
Avatar billede roenving Novice
31. oktober 2003 - 11:22 #3
Egentlig skifter du kun een property, for at vise eller skjule: display: block | none; så det ville være lettere at 'bare' ændre den, f.eks.:

function skiftVis(b){
  d = document.getElementsByTagName('DIV');
    for(i=0;d.length>i;i++)
      if(d[i].id.indexOf(b)==0)
        d[i].style.display = (d[i].style.display=='none')?'block':'none';
}

-- hvor den 'bare' skifter status på alle, som har den værdi som blev sendt med som det første i id !-)

Principielt er det ikke anderledes med en iframe, men jeg ville nok selv smide sådan en fætter ind i en div og så skjule vise den !o]

Men et helt eksempel:

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>VisSkjul-skift</title>
<meta name="keywords" content="roenving;http://www.eksperten.dk/spm/420457">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.black{color:black;}
.red{color:red;}
.tekst{
position:relative;
width:100px;
height:50px;
border:2px solid groove green;
margin:5px;
}
</style>

<script type="text/javascript">
function skiftVis(b){
  d = document.getElementsByTagName('DIV');
    for(i=0;d.length>i;i++){
      if(d[i].id.indexOf(b)==0){
        d[i].style.display = (d[i].style.display=='none')?'block':'none';
      }
    }
}
</script>
</head>
<body>
<button onclick="skiftVis('SH');">Vis/skjul</button><br>
<div id="SH1" class="red tekst" style="display:block;">div SH1</div>
<div id="SH2" class="red tekst" style="display:block;">div SH2</div>
<div id="SH3" class="red tekst" style="display:block;">div SH3</div>
<div id="SH4" class="red tekst" style="display:none;">div SH4</div>
<div id="SH5" class="red tekst" style="display:none;">div SH5</div>
<div id="SH6" class="red tekst" style="display:none;">div SH6</div>
<div id="SH7" class="red tekst" style="display:block;">div SH7</div>
</body>
</html>
Avatar billede hansgeist Nybegynder
31. oktober 2003 - 12:20 #4
Tak for svar. Jeg er ikke helt sikker på at du forstår.

Min Kode ser sådan ud:

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>VisSkjul-skift</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript" src="http://www.id-danmark.dk/Assets/scripts/menuscript.js"></script>
<link href="http://www.id-danmark.dk/Assets/css/menu.css" rel="stylesheet" type="text/css">
</head>

<body>

<h2>Psykopatologi</h2>

<p class="navbuts"><a href="#" onClick="P7_swapClass(1,'modul5','showit','hideit','div')">Mani og depression</a></p>
<div class="hideit" id="modul5">
(PLUGIN:SPECIAL:ManiDepri)
</div>

<p class="navbuts"><a href="#" onClick="P7_swapClass(1,'modul6','showit','hideit','div')">Narcissisme</a></p>
<div class="hideit" id="modul6">
(PLUGIN:SPECIAL:Narcissisme)
</div>

</body>
</html>

Når man viser en "menu" folder alle andre sig sammen. Når kan klikker på en menu der er foldet ud folder den sig sammen og når man klikker på den igen så folder den sig ud igen. Som du kan se så gemmer jeg alt indholdet i mine <div> tags når siden loader på denne måde <div class="hideit" id="modul6">

Og her vælger jeg blandt andet at scriptet skal anvendes på en div tag:

(1,'modul6','showit','hideit','div')

Istedet for at fylde <div> tagen med den der (PLUGIN:SPECIAL) der er et cgi script som henter nogle artikler i en database så kunne det måske være en URL adresse i en iframe. Men, men, men. Selve scripret udløses jo af et nul link nemlig #. Så spørgsmålet er stadig hvordan den kan vente med at hente indholdet.

På forhånd tak.
HansGeist
Avatar billede roenving Novice
01. november 2003 - 02:05 #5
-- jeg tror egentlig at jeg forstår dig, men har du prøvet mit eksempel, for der er ikke tvivl om, at vi taler en anelse forbi hinanden ...

I en iframe kan du jo i det øjeblik, jeg i eksemplet ændrer display-style i stedet ændre .src på iframen og på den måde få den til at loade indholdet !-)
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