我有一个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";