2009-11-03 3 views
0

document.body에 함수를 호출하는 자바 스크립트가 있습니다. 이제 함수에 전달하지 않고 호출 domnode를 얻을 수 있다면 (함수 내에서) 가능하면 스스로에게 묻습니다.어떻게 내 함수를 호출하는 노드를 얻을 수 있습니까?

+0

당신이 이벤트 처리에 대해 이야기한다고 가정하면, 'this'를 통해 노드에 액세스 할 수 있습니다 – James

답변

0

두 가지 방법이 있습니다. 하나는 함수 안에서 'this'를 사용하는 것입니다. 그것은 당신의 경우 dom 요소가 될 실행 범위를 참조합니다.

그러나 접근하는 객체 작업을 시작하자마자 문제가 발생할 수 있으므로 이벤트를 전달하고 대상을 사용하는 것이 좋습니다. 다소과 같이 : 당신이 이벤트 :

0

으로 수행 할 수 있습니다 당신이 실제로 다른 것들의 전체 슬루에 액세스 할 수 후자의 접근 방식 물론

... onclick="myObject.myFunction(event)" .. 

myClass.prototype.myFunction = function (event) 
{ 
    event.target == myNode 
} 

난 당신이 무슨 뜻인지 모르겠어요 "document.body 안의 일부 자바 스크립트".

function myHandler(e){ 
    e = e || window.event; /* IE fallback */ 
    var node = e.target || e.srcElement; /* IE fallback */ 
} 

을하지만이 < 스크립트 /> 요소 (인라인 코드 나 외부 파일에서) 내 코드 조각 인 경우에 그것을 :이 이벤트 핸들러가 있다면

,이 같은 이벤트 대상 요소에 얻을 수 있습니다 DOM 트리에서 실행되는 곳을 찾는 것이 가능하다 :

<div> 
<script type="text/javascript"> 
(function(){ 
    var scripts = document.getElementsByTagName('script'); 
    var node = scripts[ scripts.length-1 ].parentNode; 
}()) 
</script> 
</div> 

번째 예는 < 스크립트 /> 요소는 상기 DOM 트리의 마지막 수단 즉시 실행 익명 함수를 사용 실행의 순간. 따라서 DOM 트리에서 함수가있는 곳을 찾기 위해 부모 노드에 액세스 할 수 있습니다.

관련 문제