[javascript] alle layers 'sluiten'?

Pagina: 1
Acties:

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Hey,

ik heb een javascript waarmee ik wat verborgen layers kan laten zien.
Als ik een layer laat zien wil ik dat alle andere layers worden gesloten, dat doe ik nu met een hide functie die ik dan voor alle andere layers aanvraag.
Om layer 2 te laten zien voer ik bijvoorbeeld het volgende uit:

show('2');hide('1');hide('3')hide('4');

Maar binnenkort zijn die layers niet altijd hetzelfde, de ene keer kunnen het er 2 zijn, de andere keer 16.

Hoe kan ik er nu voor zorgen dat ik met een hide functie alle layers sluit en daarbij dus niet opgeef welke hij moet sluiten?
Dan zou je zoiets krijgen:

closeall();show('2');

Ik wil dus niet in die closeall alle andere layers opgeven....

kan dit?
Of moet ik m'n javascript ook variabel maken en toch alle layers opgeven in m'n sluit functie?

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

pseudo code:
code:
1
2
3
4
5
voor (elke layer in het document) {
    als ( de laag visible is ) {
      zet de visibility van de laag op hide
      }
    }

HTH :)

"You're only as good, as what you did last week."


  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Ok, maar het gaat mij eigenlijk vooral om 'elke layer in het document', hoe doe ik dat?

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

Op donderdag 29 november 2001 11:46 schreef Tangletje het volgende:
Ok, maar het gaat mij eigenlijk vooral om 'elke layer in het document', hoe doe ik dat?
heel goed nadenken.. ;)

tip: for ( xx in document.all )

:)

"You're only as good, as what you did last week."


  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
hmm :) ik ben niet echt zo'n javascript held.....maar ik zal wel weer 's flink verder zoeken.....(doe ik de hele ochtend al ;))

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

hmm :) ik ben niet echt zo'n javascript held.....maar ik zal wel weer 's flink verder zoeken.....(doe ik de hele ochtend al ;))
Toch beter zoeken, bij mijn eerste zoektocht (via google) vond ik dit:

How can I automatically close all open layers?

  • Blue-eagle
  • Registratie: September 2000
  • Niet online
Op donderdag 29 november 2001 12:46 schreef Tangletje het volgende:
hmm :) ik ben niet echt zo'n javascript held.....maar ik zal wel weer 's flink verder zoeken.....(doe ik de hele ochtend al ;))
Tip: werk met de tagName property.
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/properties/tagName.asp

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Thnx....ik ben ook altijd te dom om ff op Google te zoeken....
Ik zat alle topics over layers op got door te spuizen :)

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
In IE werkt dit perfect:
code:
1
2
3
4
5
6
7
8
function hideallinfo() {
  var xx;
  for (xx in document.all) {
    if (xx.substr(0,5) == \"adres\") { 
    eval(xx+'.style.visibility=\"hidden\"')
    }
  }
}

Maar in netscape werkt 't niet ;(

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

Op donderdag 29 november 2001 13:48 schreef Tangletje het volgende:
Maar in netscape werkt 't niet ;(
wat dacht je van dat netscape een ander DOM model heeft?

tip: document.layers

"You're only as good, as what you did last week."


  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

ook nog tipje voor 'moderne' DOM browsers::
code:
1
document.getElementById

www.jurgroessen.nl


  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Ok thnx beide, had ik nog niet aan gedacht.....

Het vage is alleen dat het volgende niet werkt, en nu heb ik toch volgens mij wel overal aan gedacht:
code:
1
2
3
4
5
6
7
8
9
10
  for (xx in document.layers) {
    if (xx.substr(0,5) == \"adres\") { 
    eval(xx+'.visibility=\"hidden\"')
    }
  }
  for (xx in document.getElementById) {
    if (xx.substr(0,5) == \"adres\") { 
    eval(xx+'.style.visibility=\"hidden\"')
    }
  }

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

je maakt een paar foutjes.

Die \ horen hier helemaal niet:
if (xx.substr(0,5) == \"adres"\)

getElementById betekend niets, je bent waarschijnlijk in de war met de method getElementById(). Gebruik document.all of document.getElementByTagName("DIV").

xx is een array index (string) en bij de aanroep van de properties moet je deze weer gebruiken in de array. Dus document.layers[xx]...

Onderstaande zal waarschijnlijk beter werken (niet getest overigens):
code:
1
2
3
4
5
6
7
8
9
10
11
for (xx in document.layers)
    if (xx.substr(0,5) == "adres")
        document.layers[xx].visibility = "hidden";

for (xx in document.all)
    if (xx.substr(0,5) == "adres")
        document.all[xx].style.visibility = "hidden";

for (xx in document.getElementByTagName("DIV"))
    if (xx.substr(0,5) == "adres")
        document.getElementById(xx).style.visibility = "hidden";

Today's subliminal thought is:

Pagina: 1