onload is niet zo onload als het lijkt

Status
Niet open voor verdere reacties.

Johantrax

Terugkerende gebruiker
Lid geworden
18 okt 2006
Berichten
1.268
Ik ben zonet op een eigenaardigheidje gebotst.

Ik heb een kleine pagina bestaande uit 3 divs - een container om te centreren een linkerkolom met de paginainhoud en een rechterkolom met een menu.
De Body:
PHP:
<div id="container" style="width: 600px; margin-left: auto; margin-right: auto;">
    <div id="links" style="width: 400px; margin: 10px; float: left;">
        linkerkolom<br /><br /><br /><br />meer inhoud
    </div>
    <div id="rechts" style="width: 150px; margin: 10px; float: right;">
        menuinhoud
    </div>
</div>
Nu heb ik een kleine functie geschreven die de hoogte van de container aanpast aan de hoogte van linker/rechterkolom. Deze staat in de head:
PHP:
<script language="JavaScript" type="text/javascript">
<!-- hide van oudere browsers
    function verleng() {
        var h_links = document.getElementById('links').offsetHeight;
        var h_rechts = document.getElementById('rechts').offsetHeight;
        
        if (h_links > h_rechts)
	    document.getElementById('container').style.height = h_links + "px";
	else
	    document.getElementById('container').style.height = h_rechts + "px";
    }
//-->
</script>

Nu had ik het idee om die functie op te roepen als alle content ingeladen was. Dus in de head tussen bovenvermelde scripttags na de functiedeclaratie kwam dan dit:
PHP:
window.onload = verleng();
Waarop het beoogde resultaat niet tevoorschijn kwam, maar wel volgende foutboodschap kwam bovendrijven:
Code:
ERROR: document.getElementById("links") has no properties.

Ik heb de functieoproep nu onderaan in de body gezet, wat ook werkt. De aanroep moet natuurlijk ver genoeg in de pagina gebeuren, omdat alle div's die ik aanroep gekend moeten zijn binnen de DOM-structuur van m'n site

Ik was echter van de mening dat de inhoud van de pagina ook al volledig gekend was wanneer het onloadstatement werd uitgevoerd en zodoende ook de DOM-structuur al gekend was. Blijkbaar niet dus..:confused:


Kan iemand hier me dan uitleggen, of een link posten (zowel nederlands als engels is ok) over wanneer het onloadstatement dan eigenlijk precies wordt uitgevoerd ?

Dank,
--Johan
 
Ik heb de functieoproep nu onderaan in de body gezet, wat ook werkt. De aanroep moet natuurlijk ver genoeg in de pagina gebeuren, omdat alle div's die ik aanroep gekend moeten zijn binnen de DOM-structuur van m'n site

Ik was echter van de mening dat de inhoud van de pagina ook al volledig gekend was wanneer het onloadstatement werd uitgevoerd en zodoende ook de DOM-structuur al gekend was.
Klopt helemaal, :) de fout zat 'm in de () bij de window.onload, het moet:
PHP:
window.onload = verleng;
zijn. Of <body onload="verleng();"> dat kan ook. ;)


Vr.Gr. Egel.
 
Laatst bewerkt:
vreemd dat je bij onload enkel de functienaam mag zetten en geen lege argumentenlijst.
Vrij inconsistent lijkt me zo...

--Johan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan