individuazione nodo con eventListener in oggetto javascript metodo
-
20-09-2019 - |
Domanda
Nel programma che sto scrivendo ho bisogno di essere in grado di accedere al nodo che è l'invio di un evento in javascript.
Ho avuto successo nell'utilizzo di this
, come si riferisce all'oggetto in mio codice.In modo che il seguente non funziona.
var node = new node();
// Node Object
function node() {
// Create Sibling Node
this.createSibling = function() {
var node = createNode();
this.parentNode.appendChild(node); } }
Quando chiamo la funzione createNode()
si assembla un link che è un evento onclcick
collegato ad esso chiamato node.createSibling()
e node.createChild()
su un altro link.
Attualmente sto usando var NODETREE
come il padre, perché io non so come ottenere il nodo iniziare cliccato.Questo mi trattiene dall'essere in grado di creare un nodo con i loro figli e fratelli;solo il nodo principale possono ottenere.
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); } }
Come faccio ad accedere al nodo che ha il onclcick
eventi collegati che si fa clic su di esso, senza dover creare un carico di codice, in modo che posso creare figli e i fratelli, per i nodi che ho creato e non solo il bagagliaio?
NOTA:
Ho bisogno di fare questo senza jQuery o di un altro framework.
Soluzione
Quando un elemento ha un eventhandler l'Evento in oggetto è passato al gestore di eventi.Questo oggetto evento ha tra le altre cose, un riferimento al nodo che ha generato l'evento.
Quindi...
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);
Il problema è che i nomi di proprietà di cose diverse che differiscono cross browser - questo è un altro reson per usare un framework, perché essi implementare il rilevamento del browser ans implementazioni specifiche che è necessario fare se non si utilizza uno.
Vedere quirksmode.org per alcuni dettagli: http://www.quirksmode.org/js/introevents.html