簡體   English   中英

Javascript錯誤,明確定義時function未定義

[英]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 文件來解決這個問題。

它似乎在這里工作得很好:

PHP: http://codepad.org/CGY47E1G

HTML: http://jsfiddle.net/maniator/9BCfv/

您的代碼片段看起來很可靠(盡管我會在您的回聲末尾添加換行符以使結果更具可讀性)。 您的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM