[JS] onbekende waarde opvragen

Pagina: 1
Acties:

  • Grom
  • Registratie: Juli 2002
  • Laatst online: 25-11-2024

Grom

lief hè!

Topicstarter
Ik wil graag van een element waarvan ik bijvoorbeeld de breedte niet weet deze opvragen.
Ik probeer dat op de volgende manier maar alles wat ik krijg is een lege alert :?
Als ik de regel voor de alert zet objkt.style.width="100px";
dan wordt de breedte 100px en geeft de alert keurig 100px.
Wat doe ik verkeerd of kan het op een andere manier?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Untitled</title>
<style type="text/css">
<!-- 
}
.test{
 position:absolute;
 top:10px;
 left:10px;
 background:yellow;
}
-->
</style>
<script type="text/javascript">
<!--
function specs(){
objkt=document.getElementsByTagName('div').item(0);
alert(objkt.style.width);
}
// -->
</script>
</head>
<body onload="specs()">
<div class="test">bla bla</div>
</body>
</html>

Verwijderd

De div moet wel eerst geladen zijn natuurlijk. Peobeer eens een vertraginkje in te bouwen van 1 of 2 seconden.
code:
1
2
3
4
5
6
7
8
9
10
11
12
<script type="text/javascript">
<!--
function specs(){
setTimeout('specsA()',1000);
}

function specsA(){
objkt=document.getElementsByTagName('div').item(0);
alert(objkt.style.width);
}
// -->
</script>

  • Grom
  • Registratie: Juli 2002
  • Laatst online: 25-11-2024

Grom

lief hè!

Topicstarter
onload zou een voortijdige opvraag al moeten voorkomen.
Maar ik heb het geprobeert --> geen resultaat.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:32

crisp

Devver

Pixelated

Verwijderd schreef op 17 augustus 2002 @ 19:35:
De div moet wel eerst geladen zijn natuurlijk. Peobeer eens een vertraginkje in te bouwen van 1 of 2 seconden.
code:
1
2
3
4
5
6
7
8
9
10
11
12
<script type="text/javascript">
<!--
function specs(){
setTimeout('specsA()',1000);
}

function specsA(){
objkt=document.getElementsByTagName('div').item(0);
alert(objkt.style.width);
}
// -->
</script>
Onzin, een niet-geset style attribuut levert bij uitvraging ook niets op.
Probeer het eens met:
code:
1
alert(objkt.offsetWidth);

Intentionally left blank


  • Grom
  • Registratie: Juli 2002
  • Laatst online: 25-11-2024

Grom

lief hè!

Topicstarter
offsetWidth geeft iig een waarde nl 796, +/- de vensterbreedte.
Maar dit is niet de width van de div met 'bla bla' er in.
edit:

offsetWidth geeft net als style.width wel de juiste waarde als ik die zelf zet met:
objkt.style.width="200px"; in het JS gedeelte! voor de alert.
Maar dat is nou net niet de bedoeling.

zet je de waarde width:300px in je stylesheet dan geeft:
alert(objkt.style.width); ==> niets en
alert(objkt.offsetWidth); ==> 300
Maar dat is ook niet de bedoeling.

Ik wil weten welke width de browser bepaalt heeft voor de div zonder hem in de stylesheet te zetten en zonder hem achteraf met JS te zetten.

Het moet toch op een een of ander manier mogelijk zijn om een niet 'gezette' breedte maar door de browser bepaalde breedte te achterhalen :?

  • [eNeRGy]
  • Registratie: November 1999
  • Laatst online: 24-04-2025
offsetWidth is de breedte die de browser op dat moment toont hoor.

Verwijderd

Uit de oude doos :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<html>
<head>
<title>Untitled</title>
<style type="text/css"><!--
.test{
 position:absolute;
 top:10px;
 left:10px;
 background:yellow;
}
//-->
</style>

<script language="JavaScript"><!--
function textWidth() {
    if (document.layers)
        alert('width = ' + document.layers['testA'].document.width + ' height = ' + document.layers['testA'].document.height);
    else if (document.all)
        alert('width = ' + document.all['testA'].clientWidth + ' height = ' +  document.all['testA'].clientHeight);
}
//--></script>
</head>
<body onLoad="textWidth()">
<div class="test" id="testA" style="position:absolute;">
How wide<BR>
and how<BR>
high is<BR>
this <BR>
layer<BR>
</div>
</body>
</html>

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:32

crisp

Devver

Pixelated

[eNeRGy] schreef op 17 augustus 2002 @ 23:16:
offsetWidth is de breedte die de browser op dat moment toont hoor.
Klopt; zet er maar eens een
code:
1
style="border: 1px solid #000000"

bij, dan zie je dat de div zich stretched naar de beschikbare breedte...

Intentionally left blank


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:32

crisp

Devver

Pixelated

Ja, maar dit gaat alleen op voor absoluut gepositioneerde block-level components...
En waar is trouwens de afvraging voor DOM browsers? Dit werkt dus o.a. niet met NS6 of Mozilla...

Intentionally left blank


  • [eNeRGy]
  • Registratie: November 1999
  • Laatst online: 24-04-2025
Daarom staat er ook oude doos :P

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:32

crisp

Devver

Pixelated

[eNeRGy] schreef op 18 augustus 2002 @ 01:51:
Daarom staat er ook oude doos :P
Deze hans_knight heeft volgens mij nog niet zoveel ervaring, en moet nodig eens zijn oude dozen herzien ;)

Intentionally left blank


Verwijderd

Ik houd verwijzingen van dit forum die ik interessant vind bij in mijn favorietenlijst. En die zijn wel eens een beetje verouderd. Zelfde effect zul je hebben wanneer je in de search kijkt. Vandaar oude doos. Maar je wordt er soms wel door op ideeen gebracht, en daar is dit forum toch mede voor bedoeld. :)

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:32

crisp

Devver

Pixelated

Verwijderd schreef op 18 augustus 2002 @ 22:10:
Ik houd verwijzingen van dit forum die ik interessant vind bij in mijn favorietenlijst. En die zijn wel eens een beetje verouderd. Zelfde effect zul je hebben wanneer je in de search kijkt. Vandaar oude doos. Maar je wordt er soms wel door op ideeen gebracht, en daar is dit forum toch mede voor bedoeld. :)
Klopt, zo heb ik het uiteindelijk ook geleerd; een jaar geleden was ik ook nog een complete n00b op javascript gebied :)
Maareh, is topicstarter er nou uit?

Intentionally left blank


  • Grom
  • Registratie: Juli 2002
  • Laatst online: 25-11-2024

Grom

lief hè!

Topicstarter
Ja,
offsetWidth, hield mezelf even voor de gek met de breedte van een div.
Bedankt voor de oude doos, maar ik zocht DOM's getElementsByTagName('div').
Pagina: 1