2011-07-06 11 views
-1

그래서 PHP 스크립트가 일부 자바 스크립트를 포함한 모든 HTML을 에코합니다. 문제의 자바 스크립트 함수는 선택 상자가 변경 될 때 실행될 예정이지만 선택 상자를 변경할 때마다 자바 스크립트 콘솔에 함수가 정의되지 않았다는 오류가 표시됩니다.자바 스크립트 오류, 함수가 정의되지 않았을 때 정의되지 않았습니다.

나는 디버깅에 도움이되는 경고 상자를 표시하는 기능 만 축소했지만 여전히 오류가 발생합니다. 여기

은 선택 상자를 만들기위한 책임이있는 PHP 함수입니다 :

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

완전히 불필요한 기능에가 있지만 나는 그렇게 너무 흥분하지 마십시오 약간 장소에 이미 다른 유사한 기능을 수정해야합니다 나랑!!

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

이 자바 스크립트는 PHP 파일의 맨 아래에 밖으로 반향되고 :

그리고 여기에 자바 스크립트 함수 에코입니다. 나는 그것을 최상위로 옮겨 보려고했지만 아무 것도 바뀌지 않았다.

편집 : 답장을 보내 주셔서 감사합니다. 귀하의 조언은 모두 매우 유용합니다. 나는 문제를 알아 냈고 두 가지가 잘못되어 가고있었습니다. 첫 번째 문제는 제 브라우저가 (제 생각에는) 제 자바 스크립트를 캐싱했기 때문에 더 오래된 버기 버전의 함수가 호출되었는데 완벽하게 정밀한 함수가 오류를 생성하는 이유였습니다. 내 캐시를 지워서 해결되었습니다.

다른 문제 (저는 생각합니다)는 실제로 javascript 함수가 실행되기 전에로드되지 않았습니다. 나는 자바 스크립트를 별도의 .JS 파일에 넣고 .PHP 파일에 연결하여이를 해결했다.

+0

더 많은 자바 스크립트가 있습니까? 어떤 오류가있는 경우 대부분의 경우 자바 스크립트 구문 분석이 중지되므로 나머지는 읽히지 않습니다 -> 함수가로드되지 않았으므로 정의되지 않았을 수 있습니다. – Nanne

+0

많은 도움이됩니다. 실제 페이지가 브라우저에 전달 된 모양을 알 수 있습니다. '