2009-07-07 2 views
0

다른 js 소스 파일에서 함수를 호출하는 데 관련된 질문이 있습니다. 다른 js 소스 파일에서 함수를 호출 할 때 정의되지 않은 오류가 발생했습니다.

나는 특정 함수를 호출하는 기능을 가진 파일 이전은 SourceFile을 선언했다. 이 방법이 효과가있을 것이라고 생각했지만 정의되지 않은 오류가 발생했습니다.

또한 나중에 선언 된 소스 파일에서 함수를 호출하는 함수가 있습니다. 같은 파일에 대해서는 문제가되지만 반대의 경우에는 문제가됩니다.

함수는 문서 준비 명령문 (함수) 사이에서 선언됩니다.

정의되지 않은 오류를 피할 수있는 방법이 있습니까 ?? 나는 그것을 설정하는 방법

은 다음과 같습니다

<script type="text/javascript" src="includes/livetabs.js"></script> 
<script type="text/javascript" src="includes/chat.js"></script> 


//this is in the chat.js file 
$(document).ready(function(){ 

function chatWith(chatuser) { 
    check=iscookieUsername(); 
    if (!check){ 
      chatusersuspended=chatuser; 
      showchatinlogform(); 
    } 
    createChatBox(chatuser); 
    $("#chatbox_"+chatuser+" .chatboxtextarea").focus(); 
} 


}); 

//this is in the livetabs.js file 
$(document).ready(function(){ 

function iscookieUsername(){ 
     if (!tbusername){ 

      return false; 
     } 
     if (issessionusername){//flag if session has already been set 

      return true; 
     } 
     $.ajax({ 
      url: "includes/livetabs.php", 
      data: ({username: tbusername, action: "setsessionusername"}), 
      cache: false, 
      type: "POST", 
      dataType: "json", 
      success: function(data) { 
      //store username in php session 
      //some personal user preferences returned 
      usernamecookie=data.cookie; 
      trackuser=data.track; 
      issessionusername=1; 
     }}); 

     return true; 
    } 

}); 

감사, 리처드

+0

일부 HTML/JS 소스 코드를 게시 할 수 있습니까? –

+0

좋습니다. 잠깐만. 충분하지 않다면 @SOLUTION YOGI와 같은 사이트 – Richard

답변

2
첫 번째 소스 파일, 호출 할 함수를 포함 하나, 구문 오류가 있는지 그것은 가능성

그 기능을 사용할 수 없게합니다.

또한 어떤 순서로 파일을로드해도 문제가 발생하지 않습니다.이 기능은 어쨌든 사용할 수 있습니다. 예 :

function foo() { alert('foo!'); } 
foo(); 
bar(); 
function bar() { alert('bar!'); } 

편집 : SolutionYogi가 정답을 예측 한 것처럼 보입니다. 그러나 참고로, 나는 내 것을 떠날 것이다.

+0

에 대한 링크를 제공 할 것입니다. 이는 함수를 둘러싼 문서 준비 메소드 때문일 가능성이 큽니다. 먼저 체크 아웃해야 할 것입니다. – Richard

+0

이것은 나의 경우이었다 : 시간 조사를 닫았다! – Vale

7

$ (document) .ready 메서드 호출 내에서 함수를 정의한 경우 외부에서 볼 수 없습니다. 준비 메소드 호출 외부에서 정의하려고 시도하십시오. 이 코드가 배치되어 있지 어떻게하면 문제를 식별 할 수 있도록

$(document).ready(
    function() 
    { 
     var test = function() { alert('test'); }; 

     test(); //It will work here. 

     anotherTest(); //This will also work. 

    } 

); 

function anotherTest() { alert('anotherTest'); }; 

test(); //You can't call test function here because test is defined inside the anonymous function passed to the 'ready' method. 

anotherTest(); // Alerts 'anotherTest'. 

, 소스 코드를 게시하시기 바랍니다.

+0

감사합니다. 원래 질문을 편집했습니다. 문서 준비 방법에서 가져와야합니다. 그것은 그 때 일 것입니다. – Richard

+0

Richard, 'iscookieUsername'및 'chatWith'기능을 문서 외부에 배치하십시오. document.ready는 웹 페이지를로드 할 때 실행할 코드를 넣는 곳입니다. 거기에 함수를 정의하지 마십시오. 더 많은 것을 이해하기 위해 몇 가지 jQuery 튜토리얼을 읽으십시오. – SolutionYogi

+0

네, 고맙습니다, 적어도 지금은 지금도 있습니다. – Richard

0

특정 페이지를 탐색하기 전에 Google 크롬을 사용하고 개발자 도구를 보려면 F12 키를 누르십시오. 네트워크에서 어떤 파일이로드되어 있는지보고 자신의 기능이 포함 된 스크립트를 검색 할 수 있습니다. . (스크립트에서도 필터링 할 수 있습니다.) 맨 위에 있어야하고 호출 스크립트는 나중에로드해야합니다. 로드되지 않은 경우 이전에 해당 파일을 페이지에 포함하십시오. 희망은 그 문제를 해결할 것입니다.

관련 문제