Avatar billede myplacedk Nybegynder
25. april 2001 - 12:55 Der er 16 kommentarer og
2 løsninger

Find bunden på et element/objekt

På en side har jeg tre div\'er, som skal gå lige lang ned, selv om de ikke starter det samme sted.
Dvs. jeg skal finde bunden af et element, i forhold til dokumentets top.
Men hvordan gør jeg det?
top + højde, så langt er jeg med.

Jeg har også fået lavet lidt java script:

function findbottom(obj) {
    if (!ns4) {
        objbottom = obj.offsetHeight + obj.offsetTop;

Den holder bare ikke, hvis en div er inde i en anden div, så er det nemlig ikke i forhold til dokumentet med til parent...

Er der nogen der kender til en funktion der kan finde bunden af et objekt, eller kan hjælpe mig med at få min til at fungere?
Avatar billede ras2000 Nybegynder
25. april 2001 - 14:00 #1
Tja, det indlysende ville være at lægge offsetTop af de forskellige div tags til.
Avatar billede myplacedk Nybegynder
25. april 2001 - 15:17 #2
But how?
obj.offsetHeight + obj.offsetTop + obj.offsetParent.offsetTop;

Men hvor mange \" + obj.offsetParent.offsetTop\" skal der på? Det er jo alt fra 0 og opefter...
Avatar billede ras2000 Nybegynder
25. april 2001 - 15:20 #3
Hvad med at måle alle tre div\'ers offsetHeight, se hvilken der er størst, og sætte de to andre til det?
Avatar billede myplacedk Nybegynder
25. april 2001 - 15:24 #4
De starter ikke lige langt oppe.
Avatar billede ras2000 Nybegynder
25. april 2001 - 15:30 #5
Jamen så læg offsetTop til. Altså if (div1.offsetHeight + div1.offsetTop > div2.offsetHeight + div2.offsetTop && div1.offsetHeight + div1.offsetTop > div3.offsetHeight + div3.offsetTop) {
div2.offsetHeight = div1.offsetHeight + div1.offsetTop - div2.offsetTop;
div3.offsetHeight = div1.offsetHeight + div1.offsetTop - div3.offsetTop;
if(div2...
if(div3...
Syntaxen er vist ikke helt rigtig, men du forstår vel
Avatar billede myplacedk Nybegynder
25. april 2001 - 15:33 #6
Problemet er, at hvis en div ligger i en anden div med \"position:absolute;\", så er offsetTop i forhold til denne, og ikke i forhold til \"body\"...
Avatar billede ras2000 Nybegynder
25. april 2001 - 15:35 #7
Har du et link til siden? Eller kan du ligge noget af koden herind?
Avatar billede myplacedk Nybegynder
25. april 2001 - 15:41 #8
Øhm... Jeg kan lige lave et kodeeksempel der indeholder problematikken. Giv mig lige en halv time...
Avatar billede myplacedk Nybegynder
25. april 2001 - 16:07 #9
Så er den der... :)
http://myplace.dk/temp/temp.html
Avatar billede ras2000 Nybegynder
25. april 2001 - 16:40 #10
Tja, jeg kan se hvad du mener med at det bliver rodet i længden, hvis du har mange div\'er inde i hinanden. prøv at se her:
http://www.mur-tag.dk/new_page_1.htm

Ville det ikke være nemmere med nogle tabeller i stedet?
Avatar billede ras2000 Nybegynder
25. april 2001 - 16:43 #11
Ellers må du kunne iterere igennem dine tags, jeg ved ikke hvordan man gør det i ns, med i explorer er det noget ala:
do while (el.tagName == \'DIV\')
el = el.parentElement;
bunden = bunden + el.offsetHeight;
loop
Avatar billede myplacedk Nybegynder
25. april 2001 - 17:19 #12
Lige præcis dette ville vist være nemmere med tables, men alt i alt er CSS nu en ganske herlig ting... :)
I øvrigt er brug af tables til at lave layout med imod ca. alle anbefalinger... :)

Dit forslag med at iterere ser vist ud til at være en løsning, jeg kigger på det.

Tak for hjælpen. :)

(...venter lige med at lukke spørgsmålet til problemet er løst...)
Avatar billede ras2000 Nybegynder
25. april 2001 - 17:23 #13
Jamen du kan da sagtens bruge css, absolute positioning, osv på tabeller!<table style=\"position:absolute;left:100;top:100\"><tr style=\"....
Avatar billede myplacedk Nybegynder
26. april 2001 - 09:54 #14
Ja, men ikke uden at bruge... tabeller! :)
Det er ikke for at bruge CSS, det er for at undgå tabeller...
Tabeller blev kun brugt til layout fordi der ikke var andet, det er der nu. Man skal bare lige lære at bruge det... :)
Avatar billede ras2000 Nybegynder
26. april 2001 - 09:58 #15
Det er en lidt firkantet måde at se det på. En blød mellemvej plejer at være løsningen. Jeg brugte osse divs og positioning helt vildt for et års tid siden, nu er jeg så småt gået tilbage til tabellerne igen.
Avatar billede myplacedk Nybegynder
26. april 2001 - 12:07 #16
Det har noget at gøre med venlighed for handicappede og alternative måder at se på www.
Så sent som i tirsdags var der en artikel i Computerworld om at surfe på håndholdte computere. De sider som var bedst, bruge CSS til layout i stedet for tabeller.
Flere og flere udgiver også ganske seriøse forslag til \"standarder\" for hvordan man laver websider. Ud over at man snakker om måder at sammensætte farver osv. anbefaler man også at man ikke bruger tabeller til layout.
Avatar billede myplacedk Nybegynder
26. april 2001 - 13:14 #17
Virker kun i IE, ved ikke hvilke versioner:

function findbottom(obj) {
    objbottom = obj.offsetHeight;
    do {
        objbottom = objbottom + obj.offsetTop;
        obj = obj.parentElement;
    } while (obj.tagName != \'BODY\')
    return objbottom;
}

ras2000, du kom med et halvt svar. Hvis du nu lige svarer, så deler vi pointene... :)
Avatar billede ras2000 Nybegynder
26. april 2001 - 13:17 #18
svar.
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