我在webpage.php中有一些JavaScript代码。部分JS代码由PHP生成。我想将JS移动到另一个文件jscode.js。我如何根据webpage.php中声明的变量,以一种webpage.php动态加载JS代码的方式将PHP生成的JS代码移出webpage.php?
webpage.php的一部分如下所示:
<?PHP $height = $_POST['height'];
// more code
var height = <?PHP echo $height; ?>;
我希望它不在声明$ height的文档中。我该怎么做?
答案 0 :(得分:4)
假设高度与div标签有关。让php在div上回显高度:
<div id="whatever" data-height="<?php echo $height; ?>"></div>
然后在javascript中访问它:
var height = parseInt(document.getElementById("whatever").getAttribute("data-height"), 10);
在页面末尾包含脚本标记,以确保执行JS代码时存在div(或任何一个)元素。
这是最不突兀的做法,并不依赖height
作为全局变量。
答案 1 :(得分:1)
如果您的网页.php包含您的文档<head>
,则可以
<script type="text/javascript">
var height = "<?php echo $height; ?>";
</script>
<script type="text/javascript" src="jscode.js"></script>
然后,如果你之后包含了jscode.js脚本,height
变量将在范围内
答案 2 :(得分:0)
只需将动态生成的值传递给.js文件中定义的函数。
//jscode.js
function doStuff(x, y){
//stuff
}
//page.php
<scrpit>
doStuff(<?PHP echo $x; ?>, <?PHP echo $y; ?>);
</script>
答案 3 :(得分:0)
您可以使用基本模板。
在你的js文件中放入你的源码,你需要一个php变量的地方,用一种特殊的方式来调用它,比如: [PHP:MyVar的]
然后在你的php中,你可以将所有模板变量放在一个数组中。
$templateVars = array('[php:MyVar]'=>'value', '[php:MyVar2]'=>'value2');
加载您的文件:
$js = file_get_contents("js_file.js");
并替换它的内容:
$js = str_replace(array_keys($template_vars), array_values($template_vars), $js);
最后打印出来:
echo "<script>$js</script>";