Pergunta

No programa que estou escrevendo, preciso acessar o nó que está enviando um evento no JavaScript.

Eu não tenho êxito em usar this, como se refere ao objeto no meu código. Portanto, o seguinte não funciona.

var node = new node();

// Node Object
function node() {

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

Quando eu chamo a função createNode() Ele monta um link que tem um evento onclcick anexado a ele chamado node.createSibling() e node.createChild() em um link diferente.

Estou usando atualmente var NODETREE Como pai, porque não sei como obter o nó que é iniciado. Isso está me impedindo de poder criar um nó com seus próprios filhos e irmãos; Somente o nó principal pode obtê -los.

    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); } }

Como faço para acessar o nó que tem o onclcick Evento anexado que está sendo clicado, sem ter que criar um monte de código, para que eu possa criar filhos e irmãos para os nós que criei e não apenas o porta -malas?

NOTA:

eu tenho que fazer isso sem jQuery ou outra estrutura.

Foi útil?

Solução

Quando um elemento tem um manipulador de eventos, o objeto de evento é passado para o manipulador de eventos. Esse objeto de evento tem, entre outras coisas, uma referência ao nó que desencadeou o evento.

Então...

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);

O problema é que os nomes de propriedades para coisas diferentes diferem o navegador cruzado - essa é outra resson para usar uma estrutura, porque eles implementarão as implementações específicas da detecção do navegador que você precisará fazer se não usar um.

Consulte Quirksmode.org para obter alguns detalhes avançados: http://www.quirksmode.org/js/introevents.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top