09. marts 2012 - 13:24Der er
29 kommentarer og 1 løsning
Dynamisk ændring af celle bredde, ud fra <div>'s overflow
Når vi nu er i gang med at oprette spørgsmål. Så kunne jeg godt tænke mig at vide, og eventuelt hvordan, om det er muligt at tilpasse en celles bredde dynamisk, alt efter om den div som tabellen ligger i, for scrollbar eller ej?
Min div ser således ud:
<div style="overflow:auto;height:650px;">
Den sidste kolonnes celler, vil jeg så gerne kunne tilpasse bredde på alt efter om div'en har scrollbar eller ej. Det har nemlig meget indflydelse på, hvordan layouttet ser ud.
Tja, laver da sikkert en fejl, elers burde det vel virke :-)
Tager jeg din testkode, får jeg popupen, men ikke på min egenside.
For at komplicere det endnu, men så er siden bygget sådan op, at der er en index side, som bl.a. inkludere denne side, jeg har problemer med. Begge indeholder javascript.
Kan det have noget med det at gøre? Jeg prøvede godt nok at flytte scriptet op i hovedsiden, men det hjælp heller ikke.
Har du slået fejlmeldinger fra? I så fald kan du ikke udvikle =)
Fra det andet spørgsmål ved jeg, du bruger IE, så gør følgende: Klik på tandhjulet øverst til højre i din browser. Vælg Internetindstillinger -> Avanceret og scrolle ned til lige efter de tre første radio buttons. Her finder du en gruppe med tre check boxes. Sæt flueben i Vis en meddelelse om hver scriptfejl
Husk, at en browser læser koden, ligesom du selv gør ... oppefra og ned. Det betyder, at elementer skal være renderet i browseren, før de kan kaldes af JS.
Derfor står scriptet i mit eksempel under det element, der skal kaldes. En anden udvej er at kalde på onload
Ja, nu skal jeg bare finde ud af, hvordan jeg får defineret cellen korrekt.
Prøvede dette tildels for at fordele "overskudet", men det er vidst ikke rigtigt.
if (elm.scrollHeight>elm.clientHeight) { //alert("Scrollbar") var celle = document.getElementById("mappe"); celle.width = "30px"; var celle = document.getElementById("intern"); celle.width = "50px"; } else { var celle = document.getElementById("mappe"); celle.width = "50px"; var celle = document.getElementById("intern"); celle.width = "30px"; }
Hmm, hvordan får jeg det til at gøre det for alle rækker i tabellen?
Lige nu ændrer den kun den øverste, og det ser forkert ud. Men reelt kan jeg ikke sige, om det er rigtigt eller forkert, fordi den ikke ændre alle de andre celler.
Jeg har lige prøvet at validere din kode, og det viser sig, den er proppet med fejl - hvoraf nogle er ret alvorlige. Ret dem først, før vi kan gå videre
Naaaj, egentlig ikke, kunne ikke få det til at virke. Nu har jeg lavet en høker løsning, hvor jeg tager højde for scrollbarens bredde, og så gør den sidste kolonne fast det stykker mindre. Der er alligevel ikke rammer på tabellen, så med lidt tilpasning, ser brugerne det aldrig.
Men smid et svar, selvom jeg ikke fik det løst direkte, så har du fremkommet med en god løsning, og det skal du selvfølgelig også have noget for.
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.