1

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.

1
  • in your example you don't need php at all, js can generate random numbers Commented Mar 29, 2022 at 15:06

2 Answers 2

1

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.

Sign up to request clarification or add additional context in comments.

Comments

1

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

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.