How can I create a dynamic Javascript variable using a PHP String?
This approach doesn't work. How should I fix it to make it work?
<?php
$dynamicHTMLElementId = rand();
?>
<script type="text/javascript">
var dynamicHTMLElementId = window[<?php echo json_encode($dynamicHTMLElementId); ?>];
</script>
Thank you all in advance.
Your attempt is almost correct. Of course, for example window[1029376] is not a valid object property of window.
As long as your PHP output is JavaScript syntax it will work.
If your code has the purpose to select a random element (as unrealistic as that is), use document.getElementById() for IDs or the other getElementBy... functions.
<?php
$dynamicHTMLElementId = rand();
?>
<script type="text/javascript">
var dynamicHTMLElement = document.getElementById('<?php echo json_encode($dynamicHTMLElementId); ?>');
</script>
This may result in (with the ID being random):
<script type="text/javascript">
var dynamicHTMLElement = document.getElementById('1335407484');
</script>
Simply look at the source code of the output and check the browser console for errors.
Be aware that json_encode will not output quotes for a number.
Simple PHP function to initilize a PHP associate array as a JSON object in javascript.
function echoVariableInJavascript($variablename,$variable)
{
echo("<script type=\"text/javascript\">");
echo("var ".$variablename."= JSON.parse(atob(\"".base64_encode(json_encode($variable))."\"));");
echo("</script>");
}
/*Usage*/
$object = ["ok"=>true,"status"=>"Good"];
echoVariableInJavascript("object", $object);