Avatar billede breon Nybegynder
16. august 2004 - 15:47 Der er 4 kommentarer og
1 løsning

Lukke 2 css layers på én gang

Jeg bruger følgende kode til at åbne og lukke for CSS layers:

/* Layer popup */
function popmenu(menu){
  if (document.getElementById){
  document.getElementById(menu).style.visibility = "visible";}//ends IF

else{document[menu].visibility = "visible";}
}//ends function

//SHUT MENUS
function shut(menuname){
if (document.getElementById){
document.getElementById(menuname).style.visibility = "hidden";}//ends IF

else{document[menuname].visibility = "hidden";}
}//ends function


Det virker fint nok, så længe man skal åbne for max 1 layer og lukke max 1 layer, f.eks. med koden

java script:popmenu('layer1');shut('layer2');void(0);

Men jeg har nu brug for at kunne lukke 2 layers på én gang, og hvordan gør man det?

Jeg har prøvet med:

java script:popmenu('layer1');shut('layer2');shut('layer3');void(0);

og

java script:popmenu('layer1');shut('layer2','layer3');void(0);

men uden held.
Avatar billede roenving Novice
16. august 2004 - 15:54 #1
css layers ?-)

-- der blander du noget sammen, for en layer behøver ikke at have det fjerneste med css at gøre, ligesom hjul på en cykel ikke er bilhjul ...

-- men er du sikker på, at du ikke har fejl i adresseringen, for selv om konstruktionen er forældet for mange år siden skulle den første du har prøvet med da virke ?-)
Avatar billede breon Nybegynder
16. august 2004 - 15:58 #2
Ja ok, layers er ikke bregænset til css, men pointen er jeg skal åbne og lukek for mine DIVs.

Når jeg bruger

java script:popmenu('layer1');shut('layer2');shut('layer3');void(0);

så virker det tildels, men det er kun den første shut() der udføres, i dette tilfælde lukkes layer2 men layer3 gør ikke.
Avatar billede breon Nybegynder
16. august 2004 - 15:59 #3
Hvis konstruktionen er forældet, hvad ville man så bruge i dag?
Avatar billede roenving Novice
16. august 2004 - 16:23 #4
<a href="#" onclick="popmenu('layer1');shut('layer2');shut('layer3');return false;">Åbn layer1 (andre lukkes)</a>

-- jeg ville selv lave det, så alle andre blev lukket automatisk af funktionen, f.eks. sådan:

function popmenu(id){
  divs = document.getElementsByTagName("DIV");
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('layer')==0&&divs[i].id!=id)divs[i].style.visibility = "hidden";
  }
  document.getElementById(id).style.visibility = 'visible';
}

-- og denne konstruktion tager så ikke højde for IE4 eller NS4, hvor den du havde også understøttede de 30 brugere på verdensplan, som stadig bruger IE4 !-)
Avatar billede breon Nybegynder
16. august 2004 - 17:27 #5
Umiddelbart kunne jeg ikke få nogle af dine løsninger til at virke, men jeg fik alligevel løst mit problem. Jeg prøver at forklare det kort.

Jeg er ved at opbygge et fullscreen system (ikke et website), hvor jeg bruger en masse DIV'er til at placere det forskellige indhold, f.eks. knapper lavet i Flash. Det var så meningen at når man åbnede Layer2, skulle det dække hele skærmen og lægge sig over de andre. Det gjorde det også, med undtagelse af ét Div, Layer3 i mit ovenstående eksempel. Derfor ville jeg forsøge at lukke for det.
Det undrede mig dog, at lige præcis dette DIV ikke ville makke ret, når nu alle de andre gjorde. Det viste sig, at problemet lå i det Flash element inden i Layer3 DIV'et, og det skulle tilsyneladende have en transparent baggrund før det lod gøre.

Det er måske lidt svært at forstå, men det vigtige er, at jeg nu kan komme videre med arbejdet :-)
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