[英]Javascript error, function not defined when it is clearly defined
所以,我有一个页面,其中 PHP 脚本回显了我所有的 HTML,包括一些 javascript。 The javascript function in question is supposed to be executed when a select box is changed but everytime I change the select box I get an error in my javascript console saying that the function is undefined.
我什至将 function 缩减为仅显示一个警告框以帮助调试,但我仍然遇到错误。
这是负责创建 select 框的 PHP function :
function CreateMainSelect()
{
$html = "<select name=\"main_select\" onChange=\"test()\" id=\"main_select\" >";
$html .= "<option value='all'>All</option>";
$html .= "<option value='past'>Past</option>";
$html .= "<option value='current_and_future'>Current and Future</option>";
$html .= "<option value='date_range'>Date Range</option>";
$html .= "</select>";
return $html;
}
完全没有必要将它放在 function 中,但我需要稍微修改另一个类似的 function 已经到位,所以请不要对我太失望!
这是回显的 javascript function:
echo '<script type="text/javascript">';
echo 'function test()';
echo '{';
echo 'alert("hello world");';
echo '}';
echo '</script>';
javascript 在 PHP 文件的底部回显。 我也尝试将它移到顶部,但这并没有改变任何东西。
编辑:感谢大家的回复,您的所有建议都非常有帮助。 我找出了问题所在,并且多达两件事出了问题。 第一个问题是我的浏览器(我认为无论如何)正在缓存我的 javascript,所以我的 function 的旧版本错误版本被调用,这就是为什么一个完美的 function 出现错误的原因。 通过清除我的缓存解决。
另一个问题(我认为)是 javascript function 实际上在执行之前没有被加载。 我通过将 javascript 放在单独的 .JS 文件中并将其链接到 .PHP 文件来解决这个问题。
您的代码片段看起来很可靠(尽管我会在您的回声末尾添加换行符以使结果更具可读性)。 您的 javascript 中的其他地方可能有错误,这会阻止您的 function 被加载。
您应该使用HEREDOC来生成 javascript。 它为您省去了 escaping 所有内部报价的麻烦。 如果您不插入 PHP 变量,则可以使用NOWDOC变体,这可以为您节省少量 PHP 编译器开销。
function CreateMainSelect() {
$html = <<<EOL
<select name="main_select" onChange="test()" id="main_select" >
<option value='all'>All</option>
etc...
</select>
EOL;
return $html;
}
echo <<<EOL
<script type="text/javascript">
function test() {
alert("hello world");
}
</script>
EOL;
更容易阅读......更好的是退出回声块的 PHP 模式。 任何体面的语法高亮编辑器都将能够识别 javascript 并对其进行适当的着色。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.