php文件中的examplep脚本没有';t结转到html文件


xampp script from php file doesn't carry over to html file

我有一个php文件,其中包含一个切换可见性的按钮

echo "<button onclick = '"toggle('showDetails')'">expand</button>" ;
echo "<script type='"text/javascript'">";
echo "   function toggle(id) { 'n";
echo "       var e = document.getElementById(id)'n";
echo "       if(e.style.display == 'block')'n";
echo "          e.style.display = 'none';'n";
echo "       else'n";
echo "          e.style.display = 'block';'n";
echo "    }";
echo " </script>";

它在我的php页面上运行得非常好。但是,当我转到调用php页面的html页面时,脚本不起作用。我试着把我的脚本放在html页面的标题和html页面的正文中,但都没有用。我需要做些什么才能让我的按钮在html页面上工作。

编辑:这是showDetails元素:

echo "<div id ='"showDetails'" style='"display:none'">" ;
echo "<strong>client_address:</strong>" ;
echo $client_address;
echo "<br>" ;
echo "<strong>client_date:</strong>" ;
echo $client_date;
echo "</div>" ;

我还打开了我的html页面,并使用了谷歌chrome检查器。当我点击html页面上的按钮时,我在控制台中得到错误:

未捕获引用错误:未定义切换

当您通过ajax风格的方法(使用XMLHttpRequest)调用此php文件,并在现有页面中注入对innerHTML的赋值时,嵌入在script标记中的javacscript将不会执行。在您的情况下,这意味着永远不会定义toggle函数。

有几种方法可以解决这个问题:

  • 在发出此http请求的HTML页面中定义toggle函数。这样,具有此功能的script标签将从一开始就在那里,并在页面加载时执行。toggle函数只是坐在那里什么都不做并不重要,直到您调用menu.php文件的那一刻,它才会发回按钮。

  • 使用jQuery或具有执行此类http请求的功能的类似库执行嵌入的script标记中的任何内容。

使用第二个选项,您可以写:

$("#menuDiv").load("menu.php");

还有其他几种方法可以实现这一点,我参考了以前对这个问题的许多回答。

还要注意,在javascript中的else之前有一个分号,它会破坏if-else结构:

echo "          e.style.display = 'none';'n";

改为:

echo "          e.style.display = 'none''n";