2014-10-20 2 views
2

Java 스크립트 측면에서 jquery 함수를 호출하려고합니다. 내 코드는 다음과 같습니다Jquery 함수에서 javascript를 호출하는 방법은 무엇입니까?

ReferenceError: getUserMail is not defined.

어떻게이 문제를 해결하기 위해 : 나는 브라우저 콘솔에서 오류가 발생했습니다

<script type="text/javascript"> 
    function calljs(){ 
     getUserMail(usermMail); 
     } 

    $(function() { 
     function getUserMail(usermMail) { 
     ***some code***** 
     } 
    }); 
</script> 

?

+2

'calljs' 함수의 경우, 액세스 할 getUserMail 함수가 없습니다. –

+0

다른 함수에서 다른 함수에서 함수를 호출 할 수 없습니다. – Ravi

+0

가능한 경우 Java 스크립트에서 jquery 함수를 호출하십시오. – nmkkannan

답변

1

는 (I 의무라고 생각하지 않는)에 jQuery의 준비 콜백과 기능을 넣어 정말 필수 인 경우 다음과 같은 방법

<script type="text/javascript"> 
    var getUserMail = null; 
    function calljs(){ 
     if (null !== getUserMail) { 
      getUserMail(usermMail); 
     } 
    } 

    $(function() { 
     getUserMail = function (usermMail) { 
     ***some code***** 
     } 
    }); 
</script> 
+1

잘 작동합니다. 감사합니다. – nmkkannan

3

내가 아는 한, 메서드가 호출 될 때 메서드가 정의되어 있지 않습니다. 이

라고하기 전에 그래서,

<script type="text/javascript"> 

    function getUserMail(usermMail) { 
     ***some code***** 
    } 

    function calljs(){ 
     getUserMail(usermMail); 
     } 

    $(function() { 
     // 
    }); 
</script> 
, 그것은 당신이 간단하게 할 수있는

0

을하는 데 도움이

$(document).ready(function(event) { 
      getUserMail(usermMail); 
     }); 

을 희망처럼 정의를 정의

function getUserMail(usermMail){ 
. . . 
} 

또는 jQuery를 사용하여,

$(document).on('click', ".selector", function); 

트리거 이벤트에 함수

0

에게 사용 getUserMailcalljs에 액세스 할 수있는 scope에 정의되어 있지 않습니다. 이런 이유로 당신은 ReferenceError를 얻는다; getUserMail을 호출하려는 컨텍스트에서 해당 이름을 사용할 수있는 함수가 없습니다. 대부분의 경우에

// At this point nothing is defined 
    function calljs(){ 
     getUserMail(usermMail); 
    } 
    // now calljs is defined as a global and can be invoked from anywhere 


    $(function() { // this line is calling a function named $ (an alias for jQuery) 
       // and passing it an anonymous function as a parameter. 
     function getUserMail(usermMail) { // This function is being defined inside 
             // the scope of the anonymous function, 
             // it can be used anywhere inside the 
             // anonymous function but not outside it. 
     // ***some code***** 
     } 
    }); 
    // we are now outside the scope of the anonymous function, 
    // getUserMail is no longer in our scope and can't be called from here. 

가장 쉽고 가능성이 가장 좋은 방법은 서로를 호출 어떤 기능이 동일한 범위에 있는지 확인하는 것입니다.

내가 말할 수있는 것은 calljs이 실제로 필요하지 않다는 것입니다. 익명 함수의 범위에 구멍을 뚫기 위해 사용하려고했습니다. getUserMail이 정의되었습니다.

대신 calljs을 제거하고 getUserMail을 호출하는 코드를 ready 콜백으로 옮겨야합니다. getUserMail을 호출하기 전에 ready 콜백이 발생하기를 기다려야하는 경우 해당 코드를 호출하는 코드도 ready 콜백 내부에 있어야합니다. (호출하는 이벤트 핸들러와 같은 것은 이미 ready 콜백 안에 있어야합니다.)

다른 .js 파일의 내용과 같이 ready 콜백으로 이동할 수없는 이유가있을 경우 이를 호출 할 수있는 응용 프로그램은 너무 복잡하여 현실적으로 유지 될 수 없습니다. jQuery soup. Ember 또는 Angular과 같은 프레임 워크로 이식하는 것은 가치가 있습니다.

script 태그에도 no need to use the type attribute이 있습니다.JavaScript는 브라우저에서 폭넓게 지원되는 유일한 언어이며 모든 브라우저는 기본적으로 script 태그 용 JavaScript를 사용합니다.

관련 문제