Jeg er ikke helt sikker på at jeg kan få det til at virke. Jeg har nogle links der åbner nogen nye lag. Hvis jeg fx trykker på 1. link så kommer der et lag frem, og hvis jeg klikker på 2. link så kommer der et nyt lag op oven på det første lag. Men hvis jeg så åbner 2. link først og derefter 1. link så lægger 1. lag sig bag 2. lag og det er jo ikke så smart. Så jeg tænkte om man ikke kunne lave noget lignende det her:
Jeg er ikke helt sikker på om dette er hvad du mener, men: <a href=\"java script:zUp(0)\">Åbn lag 0</a> <a href=\"java script:zUp(1)\">Åbn lag 1</a> etc. function zUp(lag) { for (i in arrayOfLayers) { theElem = eval(\'lag\'+i); theElem.style.zIndex = i==lag? 10:0 } } hvor arrayOfLayers er en array der bruges til at indeholde dine lag, men i dette eksempel ikke bruges til andet end at tælle lagene..
Undskyld jeg ikke lige har svaret. Der er ikke noget af det jeg kan få til at virke, men hvis der er en der kan lave det og forklare det godt så ville jeg blive meget glad.
// og laver lige et array af lag.. lag = new Array() lag[0] = new Array; lag[0][0] = aDivCBR; lag[0][1] = aDivCSS; lag[1] = new Array() lag[1][0] = bDivCBR; lag[1][1] = bDivCSS; lag[2] = new Array() lag[2][0] = cDivCBR; lag[2][1] = cDivCSS; }
function fnSetEvents() { // her fanger vi onclick-events\'ne // og sætter handlers på for (i in lag) { if (!IE) lag[i][0].captureEvents(Event.CLICK); lag[i][0].onclick = new Function(\"e\",\"fnClick(\"+i+\")\"); } } function fnClick(objNum) { for (i in lag) { if (lag[objNum][1].zIndex<lag[i][1].zIndex) lag[i][1].zIndex=(lag[i][1].zIndex-1) } lag[objNum][1].zIndex=lag.length; } </script> </head> <body onload=\"document_onload()\"> <div id=aDiv class=etLag>Jeg er div A</div> <div id=bDiv class=etLag>Jeg er så div B</div> <div id=cDiv class=etLag>Og jeg hedder div C</div> </body> </html>
Ideen er at det lag der trykkes på bliver sat forrest, mens de andre lag beholder deres indbyrdes zIndex rækkefølge; det er derfor jeg har lavet den der if-sætning i fnClick - den tester simpelthen om det lag der bliver løbet igennem har højere zIndex end det man har trykket på.. Virker i IE og NS 4+
Forresten, grunden til at jeg både bruger LAYER-BACKGROUND-COLOR og BACKGROUND-COLOR, såvel som CLIP i stylesheetet er netop for at få det til at fungere i netscape også :)
hvis det ikke virker som du vil ha\' det til kan du jo lige lave en kommentar med en forklaring på hvad der er galt.. Jeg har testet det i IE 5.0 og NS 4.7, men det er standard DOM så der burde ikke være problemer med browsere 4+ :)
alle steder hvor der står noget med \"aDiv\" skal så ændres til ditDivNavn. Pointen er at jeg refererer objekterne vha. et array (det gør det nu lidt lettere..). Dette array skal så opdateres til at indeholde referencer til dine div/span/hvadsomhelst. f.eks skal en div der hedder <div id=nytNavn class=etLag> så medføre (i scriptet) nytNavnCBR = IE? nytNavn:document.nytNavn; nytNavnCSS = IE? nytNavn.style:nytNavnCBR; lag[(værdi svarende til længden af elementer i lag)][0] = nytNavnCBR; lag[(værdi svarende til længden af elementer i lag)][1] = nytNavnCSS;
(i stylesheetet) #nytNavn { TOP:(værdi) LEFT:(værdi) LAYER-BACKGROUND-COLOR:(værdi) BACKGROUND-COLOR:(værdi) CLIP:(værdi der bør svare til WIDTH og HEIGHT) }
Jeg har i forvejen nogen <div>\'er der har et id der hedder noget i retningen af id=\"win(1)\". Så kan jeg jo ikke bare gå ind og skrive noget andet i id for så er der noget ander der ikke virker.
Det kan godt være jeg ikke helt har fattet hvad det er du har skrevet :-)
<Jeg har først lige haft tid nu> hmmmm... Uden at være 100% sikker tror jeg ikke det er en særligt god ide at have ID\'er med paranteser som \"divID(tal)\".. Du kan f.eks bruge win1, win2...winX istedet for.. Men, selvfølgelig, hvis det ikke har givet dig nogle problemer så går det jo nok alligevel :)
Det jeg mente var heller ikke at du skulle rename dine divID\'er men tværtimod at du kan beholde dem hvis du så bare ændrer referencen i scriptet.. Måske kan man forklare det sådan her: Scriptet har nogle referencer der PEGER PÅ de lag der skal opføre sig på en bestemt måde (altså i dette tilfælde ændre zIndex ved onclick). For at det skal fungere skal du så hive i scriptets pegefinger for at få den til at referere de ønskede objekter, f.eks win1, win2, win3 osv.. osv..
Mht. point.. Altså, selvom det da er en rar bonus er det jo ikke derfor man gider at hjælpe folk - det er ligeså fedt hvis man kan hjælpe med at få dem til at komme lidt videre og måske forstå noget de ikke forstod før.. kort sagt: \"don\'t worry!\" Jeg vil da gerne have point, men det er ikke afgørende.
Forresten så havde jeg også kun skrevet id=win1. Det kan godt være jeg er lidt svær at gøre tilfreds, men jeg er altså ikke særlig god til javascript.
Jeg har dette her script i forvejen:
<script> function vis(i){ if (document.layers) document.layers[\"win\"+i].visibility=\'show\'; else document.all[\"win\"+i].style.visibility=\'visible\'; } function gem(i){ if (document.layers) document.layers[\"win\"+i].visibility=\'hide\'; else document.all[\"win\"+i].style.visibility=\'hidden\'; } </script>
Det kan du se at den der \"win\"+i er id\'en. Skal jeg så have den kode flettet sammen med din kode på en eller anden måde???
aha - i virkeligheden er det du skal gøre ikke at vise lag oven på hinanden, men bare at vise et lag ad gangen? Det eksempel jeg har lavet gør ikke præcist sådan, det laver nærmere en \"når-du-trykker-på-mig-kommer-jeg-øverst-i-bunken\" effekt. Arrrhhhh... nu har jeg jo lige set din kommentar fra 28-08 2000... Ok... Ved du hvad, lur mig om ikke jeg kan få tid til at lave et ready-made eksempel til dig i løbet af idag eller imorgen :)
Men det ville være ret fedt hvis du kunne få lavet det script der.
Synes godt om
Ny brugerNybegynder
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.