21. juni 2000 - 19:58Der er
13 kommentarer og 1 løsning
Hvor høj er tabellen?
Hej..
Jeg har en tabel, som bliver oprettet dynamisk. I et af felterne har jeg et billede, som skal skaleres efter hvor høj tabellen er. I Internet Explorer kan man gøre det blot ved at sætte billedets height="100%" - men det fungerer ikke i Netscape. Kan nogen give et eksempel på, hvordan dette kan gøres med et javascript (hvis det altså kan gøres)?
Det siger vist sig selv, at scriptet skal virke i Netscape ;)
Nu er eksemplet vel ikke velvalgt, da du lige har skrevet, at din <td> skal have en højde på 50. Men jeg forstår godt problemet ;-) Du kan kun få størrelsen på hele din tabel (idet dit <div> 'pakker' sig omkring den) - og må så kende højden på de andre <tr>'s for at kunne regne dig frem til højden af billedet.
Ja, du har ret i at eksemplet ikke er velvalgt - det svarer heller ikke helt til det problem jeg har - jeg opdagede, at jeg havde glemt at fjerne et sæt <tr></tr>. Jeg har kun én række i tabellen, så billedet skal altså have samme højde som tabellen. Men jeg kan ikke få scriptet til at sende værdien videre til billedet.
'bla' kan tilsyneladende ikke læses udenfor sig-funktionen. Skal (kan) variablen gøres public på en eller anden måde, eller kan man få sig() til at returnere værdien?
function sig(){ bla = ns4? document.mitDiv.document.height : document.all.mitDiv.offsetHeight; return bla; }
Dette returnerer 0.
Hmm.. jeg begynder vist at blive lidt besværlig.. ;)
Problemet er vist mere komplekst end som så. Hvis ikke funktionen howBig() bliver kaldt i <body onload> returnerer den 0. <body onload> bliver udført når hele dokumentet er indlæst, mens scriptet her bliver kaldt mens tabellen er ved at blive oprettet - altså før dens størrelse ligger fast. (Tror jeg!)
Tilsyneladende er det ikke helt let, så der er 100 points mere, hvis det kommer til at fungere..
Næ, det tror da pokker! Jeg prøver at få højden af et <div>, der ikke er skrevet færdigt :-P En workaround er, først at udskrive en 'dummy' i et usynligt lag - aftaste dens højde, for derefter at udskrive billedet. Det kunne se sådan ud:
<html> <head> <script language="JavaScript"> <!-- var ns4 = document.layers; var ie4 = document.all; var bla; function howBig(){ bla = ns4? document.mitDiv.document.height : document.all.mitDiv.offsetHeight } // --> </script> <style TYPE="text/css"> <!-- #mitDiv{ position: absolute; visibility:hidden } --> </style> </head> <body bgcolor=white>
Jeg ved det...men det er nu engang svært at bestemme højden på juletræet, hvis man ikke har besluttet sig for højden på tagrejsningen endnu :-))
Hvis du har sat dine tekst-størrelser med CSS i 'px' - IKKE i 'pt' (!) - kunne du vel tælle linier, hvilket ikke kan være svært, når det er database-udtræk, du udskriver. Så kunne du gange antallet af linier med det antal pixels en linie og et liniemellemrum fylder og sætte billedets højde til denne højde.
Prøv at lave eksemplet ovenfor med den rigtige tekst-størrelse og 10 linier. Du skal så lave en alert i slutningen af 'howBig()', der siger: alert(bla); ...så ved du, hvor høj 10 linier er - og såhhhh... :o))
Prøv dig lidt frem. I programmering er det meget vigtigt at kunne den rette syntaks - men endnu vigtigere at kunne tænke de 'skæve' tanker!
Ideen med at tælle linier kunne i princippet godt fungere. Problemet er bare, at indholdet af tabellen ikke er særlig homogent. Tabellen bliver oprettet i et php script, som skabelon for en række sider, der indeholder forskellige skriftstørrelser, flere tabeller og billeder. (Billedet det hele drejer sig om, skal fungere som skillelinie mellem sidens indhold og en menu.)
Desværre er mine evner indenfor javascript og css ikke så store, at jeg kan føre alt for mange af de 'skæve' tanker ud i livet.. :)
Mon ikke du kan finde ud af også at lægge menuen i et <div> og placere det?
Synes godt om
Ny brugerNybegynder
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.