Avatar billede per-d Nybegynder
16. november 2004 - 16:51 Der er 7 kommentarer og
1 løsning

Finde højde og width på en tabel

Hej eksperter,

Jeg vil spørge om nogen af jer er i stand til at omskrive disse to funktioner til at finde henholdsvis højde og bredden på en tabel i øjeblikket finder de for hele siden.

Det er vigtigt at den finder den faktiske bredde og højde og ikke bare den højde og bredde der er sat i <tabel> tagget (Width, Height).

function getHeight() {
var b1 = (window.innerHeight)?true:false; if (!b1) {
var b2 = (document.body.offsetHeight==document.body.scrollHeight)?true:false;
var b3 = (document.documentElement&&document.documentElement.clientHeight)?true:false; }
var scrollHeight = (b1)?window.innerHeight:(b2&&b3)?document.documentElement.scrollHeight:document.body.scrollHeight;
var trueHeight = (scrollHeight<document.documentElement.clientHeight)?document.documentElement.clientHeight:scrollHeight
return trueHeight;
}
function getWidth() {
var b1 = (window.innerHeight)?true:false; if (!b1) {
var b2 = (document.body.offsetWidth==document.body.scrollWidth)?true:false;
var b3 = (document.documentElement&&document.documentElement.clientWidth)?true:false; }
var scrollWidth = (b1)?window.innerHeight:(b2&&b3)?document.documentElement.scrollWidth:document.body.scrollWidth;
var trueWidth = (scrollWidth<document.documentElement.clientWidth)?document.documentElement.clientWidth:scrollWidth
return trueWidth;
}

Håber på et hurtigt svar.
Avatar billede olebole Juniormester
16. november 2004 - 17:01 #1
<ole>

<script type="text/JavaScript">
window.onload = function() {
    var tbl = document.getElementById("myTable");
    alert( tbl.offsetWidth );
    alert( tbl.offsetHeight );
}
</script>

<table id="myTable" cellspacing="0" cellpadding="0" border="0">

/mvh
</bole>
Avatar billede olebole Juniormester
16. november 2004 - 17:04 #2
... og _skal_ det være med de to funktioner, kan du skrive:

<script type="text/JavaScript">
function getHeight() {
    var tbl = document.getElementById("myTable");
    return tbl.offsetHeight;
}
function getWidth() {
    var tbl = document.getElementById("myTable");
    return tbl.offsetWidth;
}
</script>
Avatar billede per-d Nybegynder
16. november 2004 - 17:09 #3
Den finder ikke den faktiske bredde ifølge mine tests, den finder fint den faktiske højde.
Avatar billede per-d Nybegynder
16. november 2004 - 17:32 #4
Fandt ud af det, det skyldes nemlig at hvis den bredde der er sat via <tabel> tagget er breddere end den faktiske bredde vil offsetWidth altid udskrive den højde derer sat.
Avatar billede olebole Juniormester
16. november 2004 - 17:50 #5
A'hvad ... det må du vist lige forklare  :)
Avatar billede per-d Nybegynder
16. november 2004 - 17:55 #6
Okay kan også se at jeg skrevet forkert men ser her:

<table width="300">
<tr>
<td name="test">
Hej
</td>
</tr>
</table>

Enhver kan rimmelig hurtigt se at den tabels faktiske bredde langtfra er 300 men offsetWidth vil alligevel udskrive "300" fordi at IE (Har ikke testet i andre browsere) vil strække cellen test så langt ud så det passer med at den for en width på 300. Og derfor udskriver offsetWidth "300"
Avatar billede mikkelk Nybegynder
16. november 2004 - 21:36 #7
det er klart...det vil andre browsere vel også gøre...
udelad width="300" og du vil så få den faktiske bredde...

<table>
<tr>
<td name="test">
Hej
</td>
</tr>
</table>
Tabellen vil så også være smallere, men sådan er det jo...
Alternativt kan du lave et <div>-tag inde i td, give det et id og så finde bredden af det istedet...
Avatar billede mikkelk Nybegynder
16. november 2004 - 21:37 #8
<table width="300">
<tr>
<td>
<div id="tdDiv1">Hej</div>
</td>
</tr>
</table>

<script type="text/JavaScript">
function getHeight() {
    var tbl = document.getElementById("tdDiv1");
    return tbl.offsetHeight;
}
function getWidth() {
    var tbl = document.getElementById("tdDiv1");
    return tbl.offsetWidth;
}
</script>
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