如何使用php动态打印html脚本


How to print html script dynamically with php?

使用php,我打印了一个<script>标记和一些JavaScript行。它发挥了应有的作用。我正在打印的脚本包括从我正在使用的库中生成一些对象。然而,当我根据某些条件想要这样做时,在这种情况下,for循环我无法使其工作。

这是我第一次尝试的代码:

<?php
$teacher1 = "teacher1";
echo "
<canvas id='"lienzoGrafo'" width='"800'" height='"600'"></canvas>
    <script languaje='"javascript'" type='"text/javascript'" charset='"UTF-8'">
    var grafo = arbor.ParticleSystem({repulsion: 3000, friction:.1, stiffnes:900, gravity:true});
    grafo.renderer = Renderer('#lienzoGrafo')
    var teacher1 = grafo.addNode('"$teacher1'",{color:'blue',width:100, shape:'dot',label:'"$teacher1'"})

从最后一行代码中可以看出,我实际上使用了一个php变量来完成脚本打印。

然而,当我试图用一个循环来完成这个循环时,我无法让它发挥作用。

这就是我尝试过的:

<?php
$teacher1 = "teacher1";
echo " 
    <canvas id='"lienzoGrafo'" width='"800'" height='"600'"></canvas>
    <script languaje='"javascript'" type='"text/javascript'" charset='"UTF-8'">
    var grafo = arbor.ParticleSystem({repulsion: 3000, friction:.1, stiffnes:900, gravity:true});
    grafo.renderer = Renderer('"#lienzoGrafo'")";
    for ($i=0; $i < 5; $i++) { 
        echo "grafo.addNode('"teacher'".$i,{color:'blue',width:100, shape:'dot',label:'"teacher'".$i})";
    }
    echo "</script>";
?>

但我什么都做不到,浏览器控制台输出:

Uncaught SyntaxError: Unexpected identifier localhost/:19

但是我的index.php在第19行有</html>标签。

我认为问题是html脚本语句被一起呈现

grafo.renderer = Renderer("#lienzoGrafo")grafo.addNode("teacher0",{color:'blue',width:100, shape:'dot',label:"teacher0"})grafo.addNode("teacher1",{color:'blue',width:100, shape:'dot',label:"teacher1"})grafo.addNode("teacher2",{color:'blue',width:100, shape:'dot',label:"teacher2"})grafo.addNode("teacher3",{color:'blue',width:100, shape:'dot',label:"teacher3"})grafo.addNode("teacher4",{color:'blue',width:100, shape:'dot',label:"teacher4"})</script>

在for循环中更改此行。。。

echo "grafo.addNode('"teacher" . $i . "'",{color:'blue',width:100, shape:'dot',label:'"teacher" . $i . "'"})";
echo "grafo.addNode('"teacher$i'",{color:'blue' etc...
                             ^^---note the position

正如所写的,您的PHP代码正在生成

grafo.addNode("teacher"7,{color:etc....
                       ^---syntax error

当我意识到渲染的html包含JavaScripts语句时,我只是在JavaScript语句中添加了一个分号(;

grafo.renderer = Renderer('"#lienzoGrafo'");";

echo "grafo.addNode('"teacher" . $i . "'",{color:'blue',width:50, shape:'dot',label:'"teacher" . $i . "'"});";

成功了!

我的学习

  • 始终查找html php生成的
  • 不使用分号结束Script语句并不总是一个好主意
  • 只有在绝对必要的时候才使用php