JavaScript 객체 메소드에서 EventListener를 사용하여 노드를 찾습니다

StackOverflow https://stackoverflow.com/questions/2267962

  •  20-09-2019
  •  | 
  •  

문제

내가 쓰고있는 프로그램에서는 JavaScript로 이벤트를 보내는 노드에 액세스 할 수 있어야합니다.

나는 사용에 실패했다 this, 내 코드의 객체를 참조하는 것처럼. 따라서 다음은 작동하지 않습니다.

var node = new node();

// Node Object
function node() {

// Create Sibling Node
this.createSibling = function() {
 var node = createNode();
 this.parentNode.appendChild(node); } }

내가 함수를 호출 할 때 createNode() 이벤트가있는 링크를 조립합니다 onclcick 그것에 부착되어 있습니다 node.createSibling() 그리고 node.createChild() 다른 링크에서.

현재 사용 중입니다 var NODETREE 시작하는 노드를 얻는 방법을 모르기 때문에 부모로서 클릭하십시오. 이것은 내가 자녀와 형제 자매들과 함께 노드를 만들 수 없다는 것을 막고 있습니다. 기본 노드만이 가져올 수 있습니다.

    var node = new node();

   // Node Object
   function node() {

   // Instance Veriables    
   var NODETREE = document.getElementById('node-tree');

   // Create Sibling Node
   this.createSibling = function() {
   var node = createNode();
   NODETREE.appendChild(node); } }

있는 노드에 어떻게 액세스합니까? onclcick 코드로드를 만들 필요없이 클릭중인 이벤트가 첨부되어 트렁크뿐만 아니라 만들어 낸 노드에 대한 어린이와 형제 자매를 만들 수 있습니까?

노트:

나는 이것을해야한다 없이 jQuery 또는 다른 프레임 워크.

도움이 되었습니까?

해결책

요소에 이벤트 핸들러가 있으면 이벤트 객체가 이벤트 핸들러로 전달됩니다. 이 이벤트 객체는 무엇보다도 이벤트를 트리거 한 노드에 대한 참조를 가지고 있습니다.

그래서...

var createSibling = function(_event){
  var e = this; // the element this function is actually attached to
  var event_e = _event.target; //another way to get at the element clicked

  // do stuff
};

document.getElementById('myElement').onClick = createSibling;
document.getElementById('myElement').captureEvents(Event.CLICK);

문제는 다른 것들에 대한 속성 이름이 다른 크로스 브라우저의 속성 이름입니다. 이것은 프레임 워크를 사용하는 또 다른 공짜입니다. 프레임 워크를 사용하지 않으면 브라우저 감지 ANS 특정 구현을 구현하기 때문입니다.

고급 세부 사항은 quirksmode.org를 참조하십시오. http://www.quirksmode.org/js/introevents.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top