Reputation: 1953
Guys i have little problem with PHP to call Javascript function on load ... Idea is when page load i do little calculation with PHP stuff , so when i finish that all i want is to write that down in same DOM element using javascript. I will not show you PHP code for calculation as i am 100% sure it is alright. This is the code i got so far , so can you just tell me whats wrong with it?
$test = 100;
echo "<script language=javascript> window.onload=UpdatePoints($test); </script>";
and Javascript function is simple
function UpdatePoints(Points) {
document.getElementById('PointsNumber').innerHTML = Points;
}
Thanks in advance
Upvotes: 0
Views: 21041
Reputation: 270599
Instead of calling the function UpdatePoints()
in window.onload
, you need to wrap the call in a function that gets assigned by reference to window.onload
. Otherwise, you are calling the function, and assigning its return value to window.onload
.
// This function wraps UpdatePoints($test)
// and is assigned as a reference to window.onload
function load() {
UpdatePoints(<?php echo $test; ?>);
}
echo "<script type='text/javascript'> window.onload=load; </script>";
Note that the language
attribute to the <script>
tag is deprecated. Include a type=text/javascript
attribute in its place (though text/javascript is genearlly the browser default)
However, since the value of $test
is created before the page loads and cannot change when the function is called, you might as well not bother passing it as a parameter, in which case you don't need to wrap the function. Just remove the ()
to assign it as a reference.
echo "<script type='text/javascript'> window.onload=UpdatePoints; </script>";
function UpdatePoints() {
// PHP write directly into the function since the value
// can't change... It's always going to be passed as what PHP assigns
// if you call it as UpdatePoints($test)
var Points = $test;
document.getElementById('PointsNumber').innerHTML = Points;
}
Upvotes: 2