Avatar billede fritz-79th Nybegynder
19. juni 2003 - 13:48 Der er 10 kommentarer og
1 løsning

Object til layers - nu med Array ?

ohøj !

Jeg er igang med et object til mine layers, men er støt ind i et problem.

Hvis vi nu forestiller os at jeg gerne vil 'slukke' for alle mine layerobjekter
undtaget layer1 - hvordan får jeg så det flette ind i min hideObject-konstruktion ?

-jeg forestiller mig at jeg skal have lavet et Array med alle mine layerObjekter i, eller hvad?

Her er lidt af min kode:

<script language="JavaScript" type="text/javascript">
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false

function init() {
    layer1 = new layerObj("layer1Div")
    layer2 = new layerObj("layer2Div")
    layer3 = new layerObj("layer2Div")
}

function layerObj(id) {
    if (ns4) {
        this.css = document.layers[id]
    }
    else if (ie4) {
        this.css = document.all[id].style
    }
    this.hideObject    = hideObject
}

function hideObject() {
    if (ns4) this.css.visibility = "hide"
    else if (ie4) this.css.visibility = "hidden"
}
</script>
<body onload="init();">
<input type="button" value="hide" onclick="layer1.hideObject();">
<div id="layer1Div">test1</div>
<div id="layer2Div">test2</div>
<div id="layer3Div">test3</div>

mvh/
Avatar billede skovenborg Nybegynder
19. juni 2003 - 14:53 #1
Skal de andre objekter fjernes når du trykker på knappen?
Avatar billede fritz-79th Nybegynder
19. juni 2003 - 15:23 #2
Nej de skal ikke fjernes. Men jeg vil fx gerne kunne sætte deres visibility til 'hidden'.
Avatar billede roenving Novice
19. juni 2003 - 15:46 #3
Enten skal du opbygge det som et array du kan iterere dig igennem eller også må du kalde dem langsomt, men du kan:

function init() {
    var layers = new Array();
    layers[0] = new layerObj("layer1Div")
    layers[1] = new layerObj("layer2Div")
    layers[2] = new layerObj("layer2Div")
}

og så lave en funktion, som hider de andre:

function hideOthers(lyr){
  for (i=0;layers.length>i;i++){
    if (lyr!=layers[i])layers[i].hideObject();
  }
}

hth
jes
Avatar billede olebole Juniormester
19. juni 2003 - 16:03 #4
<ole>

Der er ingen grund til at bruge 'hide' til NS4.X - den forstår også 'hidden':

function hideObject() {
    this.css.visibility = "hidden"
}

/mvh
</bole>
Avatar billede fritz-79th Nybegynder
19. juni 2003 - 16:26 #5
ole -----> tak det er taget til efterretning

jes -----> kan du vise et eksempel? - jeg får at vide at layers ikke er defineret :/
Avatar billede olebole Juniormester
19. juni 2003 - 16:28 #6
Erklær variablen 'layers' globalt:

var layers = new Array();
function init() {
    layers[0] = new layerObj("layer1Div")
    layers[1] = new layerObj("layer2Div")
    layers[2] = new layerObj("layer2Div")
}

/mvh
Avatar billede roenving Novice
19. juni 2003 - 16:30 #7
Det script jeg lavede sammenligner objekter, så kaldet skal være:

<input type="button" value="hide" onclick="hideOthers(layers[0]);">
<div id="layer1Div">test1</div>
<div id="layer2Div">test2</div>
<div id="layer3Div">test3</div>
;O)
Avatar billede roenving Novice
19. juni 2003 - 16:31 #8
sæ'fø'li'
Avatar billede fritz-79th Nybegynder
19. juni 2003 - 16:31 #9
Ahhhhh....... det lettede thx !!
Og så lige et svar fra .. jes må det vel blive ;]
Avatar billede roenving Novice
19. juni 2003 - 16:36 #10
Velbekomme '-)
Avatar billede roenving Novice
19. juni 2003 - 16:42 #11
-- og 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