2011-07-06 48 views
-1

PHPスクリプトがJavaScriptを含むHTMLをすべてエコーするページがあります。問題のjavascript関数は、選択ボックスが変更されたときに実行されるはずですが、選択ボックスを変更するたびに関数が定義されていないというエラーメッセージが表示されます。Javascriptエラー、関数が定義されていないと定義されていません

私はデバッグに役立つアラートボックスを表示するだけで機能を減らしましたが、まだエラーが発生しています。機能でそれを持っているとは全く不要

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; 
} 

が、私は少しの場所ですでに他の同様の機能を変更する必要があるので、あまり動揺もしないでください。

ここで選択ボックスの作成を担当するPHP関数です私と一緒に!!

echo '<script type="text/javascript">'; 
echo 'function test()'; 
echo '{'; 
echo 'alert("hello world");'; 
echo '}'; 
echo '</script>'; 

JavascriptをPHPファイルの下部にエコー出力されている。ここで

とエコーJavaScript関数です。私はそれをトップに移そうとしたけど、それは何も変わらなかった。

EDIT:皆さんのお返事ありがとうございます。あなたのアドバイスは非常に役に立ちました。私は問題を理解し、2つのことが間違っていた。最初の問題は、私のブラウザが(私はとにかく)私のjavascriptをキャッシングしていたので、古いバグのバージョンの関数が呼び出されていたので、完璧な機能がエラーを生成するように見えたのです。私のキャッシュをクリアすることで解決しました。

もう一つの問題(私が思う)は、実際にはjavascript関数が実行される前にロードされていないということでした。私はjavascriptを別の.JSファイルに入れ、.PHPファイルにリンクすることでこれを解決しました。

+0

他にもJavaScriptがありますか?何かエラーがあれば、ほとんどの場合、JavaScriptの解析が止まるので、残りは読み込まれない - >関数がロードされていないことを意味するので、定義されていない可能性があります。 – Nanne

+0

多くの助けになりますブラウザに実際のページがどのように表示されるかを知ることができます。 '