[JS] Alle layers hiden op 1 na

Pagina: 1
Acties:

  • MATANDO
  • Registratie: December 2000
  • Laatst online: 01-09 22:27
Ik heb een DHTML script gemaakt met daarin een pop-up menu.
Nu is de code zo dat deze het ene pop-upje oproept en alle andere invisible maakt.
function showpull3() {
if (ie) {drop3.visibility = "visible";}
}
function hideothers3() {
if (ie) {
drop1.visibility = "hidden";
drop2.visibility = "hidden";
drop4.visibility = "hidden";
drop51.visibility = "hidden";
drop52.visibility = "hidden";
drop53.visibility = "hidden";
drop54.visibility = "hidden";
drop55.visibility = "hidden";
}
Nu wordt dit nogal een flinke lijst omdat ik aardig wat menu's moet toevoegen. Is het mogelijk om al deze waarden in een function te zetten, en dat ik dan daar een stukje code aan toevoeg die zegt dat er 1 genegeerd moet worden?
Bijvoorbeel: function.alles() != drop3

Kan iemand mij daarmee helpen?

vinifinder.nl


  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 15-09 16:29
Lees [topic=231394/1/50] en kom dan zelf met een duidelijke topictitel anders gaat deze topic gewoon op slot. (Ik kan topictitel voor je wijzigen)

  • MATANDO
  • Registratie: December 2000
  • Laatst online: 01-09 22:27
Dat wou ik ook doen, alleen kon ik geen korte omschrijving vinden: [DHTML] waarden opslaan in function -1 waarde
Is dat wat??

vinifinder.nl


  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 15-09 16:29
Op maandag 12 november 2001 14:29 schreef MATANDO het volgende:
Dat wou ik ook doen, alleen kon ik geen korte omschrijving vinden: [DHTML] waarden opslaan in function -1 waarde
Is dat wat??
IMHO niet echt.....leg eerst eens wat duidelijker uit wat je nu wilt dan kan ik je misschien helpen........en helpen met het verzinnen van een goede topictitel.

Volgens mij heb je het namelijk over layers (DIV's) en niet over popup's.....aangezien de enige manier om popup's te verbergen sluiten is. Een URL ter verduidelijking wil ook vaak helpen.

  • Peopeo
  • Registratie: Juli 2001
  • Laatst online: 29-03-2022
Als ik het goed begrijp wil je dus met een function alle layers 'hiden' op een na. Dat kan dan volgens mij door de function een standaardvariabele mee te geven (in onderstaand voorbeeld de variabele 'degene').

dus:

function layers_verbergen_op_een_na(degene) {

if (degene != 1) {drop1.visibility = "hidden")}
if (degene != 2) {drop2.visibility = "hidden")}
if (degene != 3) {drop3.visibility = "hidden")}
if (degene != 4) {drop4.visibility = "hidden")}
etc ...

}

Philips MSX 2 | NMS 8250 | 2 disk drives | 2 cartridge sloten | 256 Kb RAM | toetsenbord | TV connection | 3,58 MHz | geen hard disk |


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 18:21

Pelle

🚴‍♂️

Het leuke van het DOM (document object model) is dat elk object in een array zit, en ook zo te benaderen is.

Zo kun je met een loopje door je array met layers heenlopen bijvoorbeeld; zo te zien gebruik je IE-only code (wat ik niet aanmoedig overigens, maar wat het wel makkelijker maakt), en dan valt te denken aan zoiets:
code:
1
2
3
4
5
maxLayer = 55;
for (i=1; i<=maxLayer; i++) {
    layerNaam = "drop" + i;
    document.all[layerNaam].visibility = "hidden";
}

Dit gaat ervanuit dat je 55 layers hebt; je zou je layernummers ook in een array kunnen douwen en daar dan doorheen loopen om foutmeldingen te voorkomen:
code:
1
2
3
4
5
allLayerNumbers = new Array(1,2,4,51,52,53,54);
for (i in allLayerNumbers) {
    layerNaam = "drop" + i;
    document.all[layerNaam].visibility = "hidden";
}

Dit gooi je dan dus in een functie waar je 1 argument aan meegeeft, namelijk het nummer van de layer die niet gehide moet worden, en dan komt er dus nog een check in als dit:
code:
1
2
3
4
5
6
7
8
9
function pauperZooi(welkeNiet) {
    // wat van die meuk die ik hierbeoven zei
    // inclusief deze check:
    if (i != welkeNiet) {
      // voer die code dan uit
    } else {
      // maak die goeie layer dus visible
    }
}

Ga hier maar eens mee aan de slag en maak er 1 functie van die alles combineert, en dan ben je er. Succes.

  • MATANDO
  • Registratie: December 2000
  • Laatst online: 01-09 22:27
Stom, stom, je hebt gelijk het zijn idd layers.
Ik heb een imagemap gemaakt, als je op 1 gedeelte komt dan krijg je een klein veldje dat in een layer staat.
Als je op een ander gebied komt dan krijg je dus de layer te zien voor dat gedeelte.
Nu heb ik om dat voor elkaar te krijgen 2 functions aangemaakt: function.showpull3 en function.hideothers3.
showpull pulled de layer die ik wil zien omhoog, en hideothers maakt alle andere layers invisible.
Werkt prima, alleen krijg je nogal een lap aan code wat ik voor elke layer weer moet gebruiken.

Is het niet mogenlijk om een function te maken met daarin de code waarmee hij alle layers die ik heb invisible maakt op degene die ik wil zien na?

vinifinder.nl


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 18:21

Pelle

🚴‍♂️

Op maandag 12 november 2001 14:53 schreef MATANDO het volgende:
Is het niet mogenlijk om een function te maken met daarin de code waarmee hij alle layers die ik heb invisible maakt op degene die ik wil zien na?
* Zucht *
Zie mijn post van hierboven.

  • MATANDO
  • Registratie: December 2000
  • Laatst online: 01-09 22:27
Sorry Peopeo en Pelle, ik zag jullie post pas nadat ik mijn post had gemaakt. Bedankt voor jullie hulp zo moet ik er wel uitkomen!!

vinifinder.nl


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

Annie

amateur megalomaan

Even een aanvulling op Pelle:
Het leuke aan het DOM is dat je ook lekker door de objecten kan wandelen op naam of type, bijv:
code:
1
2
3
4
5
6
7
function hideAllBut(sDivName)
{
    var aDivs = document.body.getElementsByTagName("DIV");
    for (var i=0; i<aDivs.length; i++)
        if (aDivs[i].id != sDivName) aDivs[i].style.visibility = 'hidden';
        else aDivs[i].style.visibility = 'visible';
}

Voor NS4 zal je dan weer wat anders moeten verzinnen. Ik heb geen NS hier om te testen, maar dat zal wel iets moeten worden als:
code:
1
2
3
4
var aDivs = document.layers;
for (var i=0; i<aDivs.length; i++)
    if (aDivs[i].id != sDivName) aDivs[i].visibility = 'hide';
    else aDivs[i].visibility = 'show';

HTH.

Today's subliminal thought is:


  • MATANDO
  • Registratie: December 2000
  • Laatst online: 01-09 22:27
Dank je wel voor je aanvulling, ik denk dat het me zo zeker gaat lukken!! *D

vinifinder.nl


  • MATANDO
  • Registratie: December 2000
  • Laatst online: 01-09 22:27
Annie, ik heb nu jouw code ingevoerd, en het werkt perfect, hardstikke bedankt dit scheel heel veel onnodige code!!

vinifinder.nl


  • MATANDO
  • Registratie: December 2000
  • Laatst online: 01-09 22:27
Damn, te vroeg gejuicht :(

Hij maakt nu alles invisible.

Annie, kan jij misschien een voorbeeldje geven van hoe een pagina eruit moet komen te zien als je bijvoorbeeld een imagemap hebt waar layers boven zweven die zichtbaar moeten worden als je eroverheen gaat, zonder dat de imagemap zelf weg is omdat deze ook aangegeven staat met een div

vinifinder.nl


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 18:21

Pelle

🚴‍♂️

Op dinsdag 13 november 2001 11:34 schreef MATANDO het volgende:
zonder dat de imagemap zelf weg is omdat deze ook aangegeven staat met een div
Euhm, je bent toch niet in het zwembad geboren, of wel? We kunnen hier wel alles voor je gaan voor zitten kauwen maar daar leer je natuurlijk helemaal niks van.

Die <div> met die imagemap erin geef je ook een ID, en je functie die door alle layers loopt voer je alleen uit als de ID van de layer ongelijk is aan de ID van de layer met de imagemap.
Oftewel, voeg nog 1 extra if-then statement toe en je bent er.

  • MATANDO
  • Registratie: December 2000
  • Laatst online: 01-09 22:27
Sorry, maar ik ben nog een n00b op dit gebied, en het is de bedoeling dat ik het wel allemaal ga snappen ja heb net een aantal boeken aangeschaft, iig thanks voor alle hulp

vinifinder.nl


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

Annie

amateur megalomaan

Met een extra if-je ben je er inderdaad.

Of als je "DOM-only" niet erg vindt kan je ook nog geinige dingen uithalen met de getAttribute() method, vb:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script language="javascript" type="text/javascript">
function hideAllBut(sDivName)
{
    var aDivs = document.body.getElementsByTagName("DIV");
    for (var i=0; i<aDivs.length; i++)
        if (aDivs[i].getAttribute('hideme') == 'yep')
        {
            if (aDivs[i].id != sDivName) aDivs[i].style.visibility = 'hidden';
            else aDivs[i].style.visibility = 'visible';
        }
}
</script>
<div id="div0" hideme="nope">deze blijft dus staan als het goed is</div>
<div id="div1" hideme="yep">deze doet vrolijk mee met het hide gedoe</div>
<div id="div2" hideme="yep">en deze ook</div>

Today's subliminal thought is:

Pagina: 1