Avatar billede joeblack Nybegynder
25. marts 2009 - 21:24 Der er 9 kommentarer og
1 løsning

Luk andre DIV'er

Hej Eksperter !

En af de mere simple - hvis man altså kan js...

Jeg bruger dette script til at vise/skjule en række div'er:

function showHideDiv(divID)
{
  if(document.getElementById(divID).style.display=='none')
    document.getElementById(divID).style.display = 'block';
  else
    document.getElementById(divID).style.display = 'none';
}

DIV'erne hedder xxx2 til xxx10 og yyy2 til yyy10.

Nu vil jeg gerne have, at når jeg viser en DIV, skal den/de øvrige skjules.

Jeg kan regne ud, at det er noget med for x = osv, men hvordan gør jeg lige ?
Avatar billede olebole Juniormester
25. marts 2009 - 21:44 #1
<ole>

var oActive = null;
function showHideDiv(divID)
{
  if (oActive) oActive.style.display = 'none';
  oActive = document.getElementById(divID);
  oActive.style.display = 'block';
}

/mvh
</bole>
Avatar billede spectrenectar Nybegynder
25. marts 2009 - 21:49 #2
Nå, nu slettede jeg alt hvad jeg lige har skrevet...

Men altså for at opsummere:

//for at oprette et array:
var mitArray = new Array;

//for at fylde noget i det
mitXArray[0] = "xxx2";
mitXArray[1] = "xxx3";
mitXArray[2] = "xxx4";
mitXArray[3] = "xxx5";

//for at løbe igennem et array
//start med at erklære en variabel
//tjek om udsagnet er sandt
//øg variablen
//løkken kører igen hvis udsagnet stadig er sandt
for( var x=0; x<4; x+=1) {
  //sæt en værdi
  mitXArray[x] = "xxx"+x;
  //hent en værdi
  div_id = mitXArray[x];
}


Så det du skal gøre er at fylde 2 arrays op med henholdsvis xxx2-xxx10 og yyy2-yyy10 i strenge (tekstvariabler).
Det kan du gøre med en for løkke eller bare ved at skrive dem ind som vist.
Dernæste laver du en funktion der gemmer alle div'er væk, og dernæste viser det div du sender som argument igen.

Håber det var en hjælp.
~Niels~
Avatar billede olebole Juniormester
25. marts 2009 - 21:56 #3
Der er ingen grund til at loope noget igennem, hvis man gemmer den senest åbnede i en variabel  ;o)
Avatar billede joeblack Nybegynder
25. marts 2009 - 22:05 #4
OleBole-> Perfekt...næsten...nu kan jeg kan ikke skjule DIV'erne med funktionen, altså ikke vise nogen. Kan det tilrettes ?
Avatar billede olebole Juniormester
25. marts 2009 - 23:01 #5
Utestet fra hoften:

var oActive = null;
function showHideDiv(divID)
{
    var oDiv = document.getElementById(divID);
    if (oActive) oActive.style.display = 'none';
    if (oDiv==oActive) return oActive = null;
    oActive = document.getElementById(divID);
    oActive.style.display = 'block';
}
Avatar billede olebole Juniormester
25. marts 2009 - 23:02 #6
Ups  =)

var oActive = null;
function showHideDiv(divID)
{
    var oDiv = document.getElementById(divID);
    if (oActive) oActive.style.display = 'none';
    if (oDiv==oActive) return oActive = null;
    oActive = oDiv;
    oActive.style.display = 'block';
}
Avatar billede roenving Novice
26. marts 2009 - 00:54 #7
Tjah, og som jeg foretrækker at skrive den:

var oldElm = null;
function showHide(elm){
  var actElm = document.getElementById(elm).style;
  var vis = actElm.display != "block";
  if(oldElm)
    oldElm.display = "none";
  actElm.display = vis ? "block" : "none";
  oldElm = actElm;
}

-- giver lidt bedre muligheder for at forstå koden og hvordan javascript arbejder ...

-- men giver også masse at forklare, hvis man skal bruge dette !-)
Avatar billede joeblack Nybegynder
26. marts 2009 - 18:18 #8
-> OleBole

Lige i skabet. Takker.

Smid et svar !
Avatar billede olebole Juniormester
26. marts 2009 - 23:11 #9
Selvtak  =)
Avatar billede olebole Juniormester
28. marts 2009 - 00:29 #10
Tak for points  =)
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