2012-11-10 10 views
2

정의되지 않은 :catch되지 않은 오류 ReferenceError가 : 전자 내가이 일을하려고하고

$("#canvasDiv").mouseover(function() { 
    var pageCoords = "(" + e.pageX + ", " + e.pageY + ")"; 
    var clientCoords = "(" + e.clientX + ", " + e.clientY + ")"; 
    $(".filler").text("(e.pageX, e.pageY) : " + pageCoords); 
    $(".filler").text("(e.clientX, e.clientY) : " + clientCoords); 
}); 

을 콘솔 내가이 얻을 :

Uncaught ReferenceError: e is not defined

이해가 안 ... 나는 e 생각 자바 스크립트가 이미 설정 한 변수가 있어야하는데 ... 도움이 될까요?

+0

JavaScript는 마법이 아니며 매개 변수를 제공 할 때만 제공 할 수 있습니다. 함수가받는 것보다 더 많은 인수를 함수에 전달할 수 있기 때문에이 상황에서 오류가 발생하지 않습니다. –

+0

'e'라고 불리며 관용적으로 (즉, function (e)를 통해) 사용할 수있게되었지만 "JavaScript가 이미 설정되었습니다"와 같이 특별한 것은 없습니다. – pimvdb

답변

10

변경

$("#canvasDiv").mouseover(function() { 

진정한

$("#canvasDiv").mouseover(function(e) { 

에, 콜백의 첫 번째 매개 변수는 미리 정의이지만, 그것을 사용하기 위해 당신은 인수 이름을 통해 별칭을해야합니다. 이것이 우리가 인수로 e을 지정하는 이유입니다. 실제로 인수 이름이 e 일 필요는 없습니다. 이 역시 작동합니다 :

$('#canvasDiv').mouseover(function(event) { 

}); 

하지만 당신은 함수 콜백의 이름 event를 통해 이벤트 객체의 별명을해야합니다.

1
   .....missing e ---- -\/ 
$("#canvasDiv").mouseover(function(e) { 
    var pageCoords = "(" + e.pageX + ", " + e.pageY + ")"; 
    var clientCoords = "(" + e.clientX + ", " + e.clientY + ")"; 
    $(".filler").text("(e.pageX, e.pageY) : " + pageCoords); 
    $(".filler").text("(e.clientX, e.clientY) : " + clientCoords); 
}); 
2

mouseover 이벤트가 발생할 때 호출되는 콜백 함수를 정의합니다. 프레임 워크는이 함수에 대한 첫 번째 인수로 이벤트에 대한 정보를 전달하며이 인수의 이름을 'e'로 지정하는 것이 일반적입니다. 하지만 함수 매개 변수에서 선언해야합니다. 즉,

$('foo').mouseover(function (e) { 
관련 문제