[JS] Problemen met uitlezen width.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Topicstarter
Hi,

Ik probeer een div uit te lezen, met name de width.

Deze wordt opgegeven via een nested stylesheet:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<html>
    <head>
        <title>Test</title>
        <script type="text/javascript">
            function test()
            {
                alert(document.getElementById("main").style.width);
            }
        </script>
        <style type="text/css">
            #main { width: 500px; color: #CCCCCC; } 
        </style>
    </head>
    <body>
        <div id="main">
            text
        </div>
        <form>
            <input type="button" value="klik" onclick="test();" />
        </form>
    </body>
</html>


Helaas krijg ik hierbij een leeg venstertje.

Ook als ik met Firebug helemaal debug, blijft het leeg.

Hoe moet dit? Want ik zit al de hele tijd te googlen, maar als ik op 'div no style width' zoek, kom ik meer codes van banners tegen als informatie.

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:40

crisp

Devver

Pixelated

currentStyle/getComputedStyle moet je daarvoor gebruiken. Als alternatief zou je natuurlijk ook gewoon de offsetWidth van de div uit kunnen vragen.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 11:50
De stijl is niet bekend in de DOM, alleen in CSS.

Ikzelf los dit over het algemeen op door een inline-style te gebruiken.
De oplossing van crisp is uiteraard netter.

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Topicstarter
crisp schreef op zaterdag 28 juni 2008 @ 23:53:
currentStyle/getComputedStyle moet je daarvoor gebruiken. Als alternatief zou je natuurlijk ook gewoon de offsetWidth van de div uit kunnen vragen.
En waarom als ik vragen mag? Als ik de CSS inline zet, neemt hij het wel mee?
frickY schreef op zaterdag 28 juni 2008 @ 23:55:
De stijl is niet bekend in de DOM, alleen in CSS.

Ikzelf los dit over het algemeen op door een inline-style te gebruiken.
De oplossing van crisp is uiteraard netter.
Ah dit is het antwoord :D Thx ;)

[ Voor 31% gewijzigd door Snake op 28-06-2008 23:55 ]

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 22-09 16:31
Snake schreef op zaterdag 28 juni 2008 @ 23:55:
[...]

En waarom als ik vragen mag? Als ik de CSS inline zet, neemt hij het wel mee?
[...]

Ah dit is het antwoord :D Thx ;)
Mjah, waarom lelijke inline styles gaan gebruiken, als je het gewoon via computed/current style op kunt vragen. Zo werkt het nou eenmaal :P

Dan heb je tenminste een solide oplossing, ipv een pleister.

Acties:
  • 0 Henk 'm!

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Let erop dat computedStyle / currentStyle het width property geeft zoals ingesteld in CSS. Dus '768px', '40em', of 'auto'. De echte breedte, incl paddings en borders, vind je met offsetWidth (in pixels).

Als je bijvoorbeeld de width op auto hebt staan, met een padding van 1em en een border van 1px, dan is het nog best een uitdaging om de width in pixels te achterhalen.

TabCinema : NiftySplit


Acties:
  • 0 Henk 'm!

  • funkwurm
  • Registratie: December 2005
  • Laatst online: 22-02-2021
Bozozo schreef op zondag 29 juni 2008 @ 11:55:
Let erop dat computedStyle / currentStyle het width property geeft zoals ingesteld in CSS. Dus '768px', '40em', of 'auto'. De echte breedte, incl paddings en borders, vind je met offsetWidth (in pixels).

Als je bijvoorbeeld de width op auto hebt staan, met een padding van 1em en een border van 1px, dan is het nog best een uitdaging om de width in pixels te achterhalen.
Dat geld alleen voor currentStyle. getComputedStyle geeft je waardes in px, het is namelijk de berekende (computed) waarde tijdens het renderen, en de engine berekend aan de hand van 40em een aantal pixels die hij vervolgens op het scherm tovert.

currentStyle is de huidige (current) stijl die is ingesteld, hetzij via inline, hetzij via een extern stijlblad.
Pagina: 1