2012-11-10 2 views
2

자바 스크립트를 사용하여 앵커 태그를 설정 했으므로 onclick이라는 함수를 호출하고 값을 전달합니다. '내가이 범위 지정 문제를 해결 있는지 확인하기 위해 showData 기능에 showSavingsEasterEgg 기능을 이동하려고했습니다ReferenceError : onclick을 사용할 때 함수가 정의되어 있지 않습니다.

ReferenceError: showSavingsEasterEgg is not defined

하지만 didn 히 : 나는 점점 오전 문제는 내가 제대로 내 기능을 참조 아니에요이다 티.

모든 팁

define(["jquery", "go/util", "underscore", "jqueryui/slider"], function ($, util,_) { 

    function showData(data) { 
    $('#item').append('<a class="savings_link" href="#" onclick=\'showSavingsEasterEgg('+data[key]['saving']+')\'> Savings'); 
    } 

    function showSavingsEasterEgg(data){ 
    console.log("SUccess"); 
    console.log(data); 
    } 

}); 
+0

btw'ReferenceError : define is defined' –

답변

7

직접 전역에 showSavingsEasterEgg의 정의를 넣습니다.

여기에서 찾을 수 없습니다.

당신은이 작업을 수행 할 수 있습니다

window.showSavingsEasterEgg = function (data){ 
    console.log("SUccess"); 
    console.log(data); 
}; 
define(["jquery", "go/util", "underscore", "jqueryui/slider"], function ($, util,_) { 
    function showData(data) { 
    $('#item').append('<a class="savings_link" href="#" onclick=\'showSavingsEasterEgg('+data[key]['saving']+')\'> Savings'); 
    } 
}); 
+0

define()은 무엇입니까? –

+0

@eicto no,하지만 그건 문제가 아닙니다 : "showSavingsEasterEgg가 정의되지 않았습니다". –

+0

그냥 궁금해, 감사합니다 –

0

당신이 알고있는 프로그래밍 언어 "scope"의 정의가 무엇인지 이해해야합니다. "showSavingsEasterEgg"이라는 함수를 부모 함수 밖으로 이동하면 매력처럼 작동합니다. 부모 함수의 private 멤버로 정의했기 때문입니다.

건배

0

showSavingsEasterEgg 전역으로 설정하십시오. html 코드에서 전역 적으로 액세스 가능한 객체/참조 만 호출 할 수 있습니다.

window.showSavingsEasterEgg = function(data){ 
    console.log("SUccess"); 
    console.log(data); 
    } 
2

아무도 왜 지금까지 가장 확실하고 편리하며 "모범 사례"방법을 제시하지 않았는지 궁금합니다. 인라인 이벤트 처리을 사용하면 안됩니다.

$('#item').append($('<a>', { 
    'class': 'savings_link', 
    href:  '#', 
    click:  function(e) { 
     console.log("SUccess"); 
     console.log(data); 
    } 
}}); 
+0

동일한 ID를 가진 여러 앵커 태그가 있기 때문에 onClick을 사용하고 싶었고 이벤트 리스너로 앵커 태그를 클릭하면 여러 번 호출됩니다. – Huy

+0

http://api.jquery.com/on/ checkout "* 이벤트 위임 *"에 대한 섹션 – jAndy

관련 문제