'How to create a dynamic Javascript Variable from a PHP String

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.



Solution 1:[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.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1