Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTML onload not working

I'm attempting to use html onload event to trigger javascript, but is not working. The original code was:

html:

<div id='map' onload="generateMap.createMap();"></div>

JS:

var generateMap = function(){
return{
    createMap: function(){
        console.log(this.attr('id'));
        element = this.attr('id');
        navigator.geolocation.getCurrentPosition(initialize);
    }
};

}

In an attempt to test, I changed the html to:

<div id='map' onload="alert('test');"></div>

Can anyone tell me why nothing is working?

like image 772
Stephen Adkins Avatar asked Oct 22 '25 08:10

Stephen Adkins


2 Answers

First, the onload attribute is not valid for a div tag. You most likely intended to place the onload in the body tag.

Unfortunately, that's not the only problem.

In your onLoad you are referencing generateMap as if it is an object with method createMap. However, this is not the case. You have assigned generateMap to an anonymous function.

To get your code working, generateMap needs to be an object with method createMap.

You just need to set it as an object in the first place:

var generateMap = {
    createMap: function(){
        console.log(this.attr('id'));
        element = this.attr('id');
        navigator.geolocation.getCurrentPosition(initialize);
    }
};

Or if you need to retain the anonymous function for whatever reason, you can use an immediately executing function:

var generateMap = (function(){
    return {
        createMap: function(){
            console.log(this.attr('id'));
            element = this.attr('id');
            navigator.geolocation.getCurrentPosition(initialize);
    }
})();
like image 112
Elliot B. Avatar answered Oct 24 '25 23:10

Elliot B.


There is no onload event for a div. You can use the script tag just after the div tag to emulate onload behavior.

Use this

<head>
    <meta charset="utf-8">
    <script type="text/javascript">
        var generateMap = {
            createMap: function(element) {
                navigator.geolocation.getCurrentPosition(initialize);
            }
        };
    </script>
</head>

<body>
    <div id='map'></div>
    <script type="text/javascript">
        generateMap.createMap('map');
    </script>
</body>

like image 21
Liam Avatar answered Oct 24 '25 22:10

Liam



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!