0

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

8
  • "when page load i do little calculation with PHP stuff" --- actually all the calculations are already done when page is loading Commented Oct 25, 2012 at 1:40
  • that is correct ... was just grammar mistake Commented Oct 25, 2012 at 1:41
  • @zerkms that is usually true but it is possible to flush the data before the script is finished executing - though in this case that is not happening. Commented Oct 25, 2012 at 1:42
  • What is not working? Is there an error message? Commented Oct 25, 2012 at 1:43
  • 1
    @zerkms Agreed, just pointing that out for future viewers. Commented Oct 25, 2012 at 3:10

1 Answer 1

2

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;
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.