2012-09-07 12 views
2

HTML :catch되지 않은 ReferenceError가

<div id="myID" onclick="cc(this.id)">Click Here</div>​ 

자바 스크립트 :

var timer; 
var firing = false; 
var begen = function(id) { 
    alert('tek'); 
}; 

var popupAc = function(id) { 
    alert('çift'); 
}; 

function cc(id) { 
    if (firing) { 
     popupAc(id); 
     clearTimeout(timer); 
     firing = false; 
     return; 
    } 
    firing = true; 
    timer = setTimeout(function() { 
     //begen(id); 
     clearTimeout(timer); 
     firing = false; 
    }, 250); 
} 

오류 :

Uncaught ReferenceError: cc is not defined 

예 : http://jsfiddle.net/LXSZj/3/

+0

http://jsfiddle.net/LXSZj/6/ – fcalderan

답변

9

귀하의 JSFiddle 환경 설정 있다 "onload"로 설정하면 JavaScript pane의 내용이 함수로 래핑됩니다.

이 범위는 cc (dd은 존재하지 않으며 jsfiddle 예제에 대한 추가 문제가 있음)이 해당 함수에 적용되어 전역이 중지됩니다.

내장 이벤트 속성에서 호출하려고하므로 다른 범위에 있으므로 액세스 할 수 없습니다.

빠른 수정으로 기본 설정을 'nowrap'으로 변경할 수 있지만 권장 사항을 준수하지는 않습니다.

내재적 이벤트 속성이 binding event handlers with Javascript 인 것을 피하는 것이 좋습니다. YUI3은 event module을 제공하고 jQuery는이를 돕기 위해 on method을 제공합니다 (다른 라이브러리를 사용할 수 있음). 참고 : Unobtrusive JavaScript.

예 : see this js fiddle.

+2

일을. 또한, 바이올린은'dd '를 호출합니다. –

+0

예! '포장 안함'으로 잘 작동합니다. – Vishal

+0

위의 설명에서이 대답을 받아 들일 수 있도록 jsfiddle 링크를 추가 할 수 있습니까? 나는 대답했다. 하지만 그것을 추가하면 완벽 할 것입니다. –

1
window.cc = function(id) { ... 

변수와 함수에있을 것 같다 그 범위에 ...

2

그것은 당신이 당신의 바이올린에 두 가지 오류가,하지 : 당신은 cc 대신 dd라고

  • 전체 javascript를 onload-function으로 감 쌉니다 (왼쪽의 드롭 다운 참조). 변수와 함수는 로컬 변수입니다. 전역 범위로 이동하거나 전역 객체에 cc 기능을 할당 : window.cc = function(){…};

Corrected version

관련 문제