Avatar billede bgo Nybegynder
07. maj 2002 - 11:15 Der er 10 kommentarer og
1 løsning

Ukendt antal layers

Er det muligt at lave en lille funktion som opretter nye layers?

Det drejer sig om, at jeg har brug for ikke på forhånd at kende til antalet af layers brugeren vælger at have fremvist. Og jeg synes det er dumt at oprette en masse der bare er skjult og gøre siden unødig tung. Derfor vil jeg gerne kunne lade en javascript-funktion oprette og måske endda fjerne layers (ikke bare vis/skjul).

Naturligvis vil jeg også gerne vide hvordan (behøver ikke være hele funktionen, blot den del der opretter/sletter layeret)

bgo
Avatar billede =maddog= Nybegynder
07. maj 2002 - 15:37 #1
i hvilke browsere vil du gerne have det til at virke.
i NS4.x kan du lave nye Layers med new Layer(int width, document parent). I NS6, IE5 og IE6 kan du lave nye layers med document.createElement('DIV').
du kan ikke fjerne layers i NS4 men du kan både fjerne node (parent.replaceNode(newChild)) og ødelægge node (parent.removeNode(child)) for layers i de andre.
Avatar billede bgo Nybegynder
07. maj 2002 - 15:44 #2
Halløj, det var lige det jeg ledte efter:)

newChild og child skal erstattes med div'ens navn?

bgo
Avatar billede =maddog= Nybegynder
07. maj 2002 - 15:45 #3
function setStyle(obj,x,y,w,h,col) {
    obj.style.position = 'absolute'
    obj.style.left = x + 'px'
    obj.style.top = y + 'px'
    obj.style.width = w
    obj.style.height = h
    obj.style.backgroundColor = col
}

function DDiv (x,y,w,h,col){
    var lyr = document.createElement('DIV')
    setStyle(lyr,x,y,w,h,col)
    lyr.style.visibility = 'visible'
    lyr.style.padding= '0px 0px 0px 0px'
    return lyr
}
// du kan så tilføje dine div's sådan
// parent.appendChild(div);
// f.x
// obj = new DDiv(20,20,300,300,'#333333'); obj.id='nr1';
// document.body.appendChild(obj)
// og fjerne dem sådan
// document.body.removeNode(document.getElementById('nr1'));
Avatar billede =maddog= Nybegynder
07. maj 2002 - 15:46 #4
nej ikke bare et navn. det skal være et DOM objekt. Det henter du med:
document.getElementById(div'ens navn)
Avatar billede bgo Nybegynder
07. maj 2002 - 15:48 #5
Og browsere, der koncentrerer jeg mig om NS6+, IE5+ og Opera6+.. Dem har jeg allerede, så jeg tager derfra og frem - bare sådan for at være på tværs:)

bgo
Avatar billede =maddog= Nybegynder
07. maj 2002 - 15:48 #6
hvis du bruger IE5 eller 6 kan du se en side der kun bruger DOM her
http://www.dsr.kvl.dk/~maddog/molbio/
se source-koden. der er kun 8 HTML tags.
Avatar billede =maddog= Nybegynder
07. maj 2002 - 15:49 #7
jeg har ikke Opera og kender ikke dens syntax. det virker med de andre to.
Avatar billede =maddog= Nybegynder
07. maj 2002 - 15:53 #8
hvis du vil tilføje text gøres det således:
obj.createTextNode(String)
f.x.
obj = new DDiv(0,0,100,100,'#333333');
obj.style.color = '#ff0000';
obj.createTextNode('Her kommer jeg, jeg er rød')
Avatar billede bgo Nybegynder
07. maj 2002 - 15:57 #9
Ret imponerende må jeg sige:) Og slet ingenting i body:)

Opera gør meget ud af at holde sig til det "korrekte". Men sjovt nok kan Opera slet ikke vise noget af den side, på trods af at den skulle understøtte getElementyId...

bgo
Avatar billede bgo Nybegynder
07. maj 2002 - 16:01 #10
Sig mig, hvor finder jeg noget mere doc om det her?? Jeg har på fornemmelse at der er flere ting jeg slet ikke kender noget til :))

bgo
Avatar billede =maddog= Nybegynder
07. maj 2002 - 16:05 #11
http://www.webreference.com/js/
artikel 40 og frem til cirka 50 handler om DOM.
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