Avatar billede travelnow Nybegynder
21. februar 2004 - 22:57 Der er 11 kommentarer og
1 løsning

Højden på en div med overflow

Hvordan læser man højden på en div med overflow f.eks.

#div1{
  position:relative;
  top:40;
  left:100;
  width:476;
  height:20;
  font:11px/17px verdana, arial, helvetica, sans-serif;
  overflow:hidden; }

<div id="div1">
  tekst linie 1
  tekst linie 2
  tekst linie 3
  tekst linie 4
  tekst linie 5
  tekst linie 6
  o.s.v.
</div>

Linie antal er forskellig fra gang til gang.

Hvis man bruger
document.getElementById('div1').offsetHeight
får man 20, altså det som den blev sat til, er der ikke en attribut / metode, hvor jeg kan få at vide hvor høj den ville have været uden overflow.
Avatar billede skovenborg Nybegynder
21. februar 2004 - 23:02 #1
hva' med
document.getElementById('div1').scrollHeight
Avatar billede lklingenberg Nybegynder
22. februar 2004 - 00:07 #2
Skulle bruge højden af hele dokumentet (for at give en specifik div den højde) og fandt ud af, at det næsten var umuligt at finde en løsning, som alle browsere kunne godtage. Fik dog stykket flg. sammen (som altså går på højden af _hele_ dokumentet). Måske kan du fifle lidt med det og finde højden af din div1.

window.onload = function() {
  if(document.documentElement){
    var b1 = document.documentElement.offsetHeight
    var b2 = document.body.offsetHeight
  }
  if(document.layers&&document.contents){
    var b4 = document.contents.clip.height
    var trueHeight = b4
  }
  if(document.all){
    var b5 = document.all.contents.offsetHeight
    var trueHeight = (b1>b5)?b1:b5
  }else{
    var trueHeight = (b1>b2)?b1:b2
  }
  if(document.getElementById){
      document.getElementById("menuLeft").style.height = trueHeight+"px";
  }
}
window.onresize = window.onload;
Avatar billede Slettet bruger
22. februar 2004 - 12:40 #3
Du kunne jo fx sige:

obj = document.getElementById("div1");
obj.style.visibility = "hidden";
obj.style.overflow = "visible";
alert(obj.offsetHeight);
obj.style.overflow = "hidden";
obj.style.visibility = "visible";

Det flimrer måske lige i et splitsekund; så er spørgsmålet, om du kan leve med det.
Avatar billede travelnow Nybegynder
22. februar 2004 - 14:19 #4
lklingenberg og phoenixv>
Hvad er der galt med løsningen fra skovenborg, den virker for mig, er der noget jeg har overset. Virker den kun med Explore eller ........
Avatar billede lklingenberg Nybegynder
22. februar 2004 - 15:04 #5
Der er intet galt med skovenborgs løsning - faktisk tværtimod, da getElementById klart er måden at gøre det på. Det skaber bare lidt problemer i nogle browsere, da nogle af de ældre slet ikke kender getElementById og andre ikke kender scrollHeight. Derudover er det meget sandsynligt at scrollHeight ikke returnerer det sammen tal i de forskellige (også nyere) browsere.
Avatar billede Slettet bruger
22. februar 2004 - 15:35 #6
scrollHeight virker kun i Internet Explorer, men ellers skulle der ikke være noget galt.
Avatar billede skovenborg Nybegynder
22. februar 2004 - 17:48 #7
phoenixv >> scrollHeight virker faktisk i nyere versioner af mozilla (dog ikke netscape).
Avatar billede skovenborg Nybegynder
22. februar 2004 - 17:50 #8
...men findes der en anden løsning vil den nok være bedre at bruge.
Avatar billede travelnow Nybegynder
22. februar 2004 - 23:55 #9
Kan man checke på om det virker, sådan at hvis browseren understøtter scrollHeight, bruges den, og hvis ikke, bruger jeg en anden rutine (nogen i stil med phoenixv forslag), hvor jeg undgår den effekt, som jeg vil bruge scrollHeight til.
Der er jo trods alt flest der bruger Explore, men siden skal kunne vises i andre browser også (i hver fald Netscape og Mozilla).
Avatar billede travelnow Nybegynder
24. februar 2004 - 02:32 #10
Hmmmmmm, ok i deler pointene.

Men kom med et svar, så i kan få pointene. Ikke nødvendigvis et svar på mit sidste spørgsmål, bare et svar.
Avatar billede lklingenberg Nybegynder
24. februar 2004 - 13:06 #11
Ingen svar fra mig - jeg kunne jo ikke afhjælpe dit problem...
Avatar billede Slettet bruger
25. februar 2004 - 20:09 #12
Fx:

obj = document.getElementById("div1");
if (typeof(obj.scrollHeight) == 'undefined') {
  obj.style.visibility = "hidden";
  obj.style.overflow = "visible";
  hoejde = obj.offsetHeight;
  obj.style.overflow = "hidden";
  obj.style.visibility = "visible";
}
hoejde = obj.scrollHeight;
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