[英]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.