Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
187
rated 0 times [  191] [ 4]  / answers: 1 / hits: 19914  / 12 Years ago, thu, october 25, 2012, 12:00:00

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


More From » php

 Answers
4

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;
}

[#82365] Tuesday, October 23, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
minab

Total Points: 701
Total Questions: 104
Total Answers: 91

Location: Saint Pierre and Miquelon
Member since Fri, Jan 28, 2022
2 Years ago
;