I really cannot understand why this does not work. I\'ve tried couple of tricks but I just don\'t get it.
The problem that you're facing is that the browser runs the JavaScript as it's encountered when rendering/processing the page. At this point it will alert()
your message, but the relevant element, the #results
div
isn't present in the DOM, so nothing can be changed.
To address this, you can either place the script
at the end of the page, just before the closing </body>
tag, or run the code in the onload
event of the body
or window
.
The script has to be placed after the div#results or executed onload, otherwise the element is still unknown when you try to access it.
<html>
<head>
<script type="text/javascript">
function onloadCall()
{
alert('Hey');
var vText = document.getElementById("results");
vText.innerHTML = 'Changed';
alert(vText.innerHTML);
}
</script>
</head>
<body onload="onloadCall()">
<div id="results">
hey there
</div>
</body>
</html>
Hope the above snippet shows you the fix
You need to call this script in onload event i.e
window.onload=function(){
//your code
}
This is working as you can see here:
http://jsfiddle.net/gHbss/
It's important that you put the JavaScript after your HTML div container.