Frage

In dem Programm, das ich schreibe, muss ich in der Lage sein, auf den Knoten zugreifen zu können, der eine Veranstaltung in JavaScript sendet.

Ich habe nicht erfolglos verwendet this, wie es sich auf das Objekt in meinem Code bezieht. Das Folgende funktioniert also nicht.

var node = new node();

// Node Object
function node() {

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

Wenn ich die Funktion aufrufe createNode() Es stellt einen Link zusammen, der ein Ereignis hat onclcick daran gebunden genannt node.createSibling() und node.createChild() auf einem anderen Link.

Ich benutze gerade var NODETREE Als Elternteil, weil ich nicht weiß, wie man den Knoten bekommt, der beginnt, klickt. Dies hält mich davon ab, mit ihren eigenen Kindern und Geschwistern einen Knoten zu schaffen. Nur der Hauptknoten kann sie bekommen.

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

Wie greife ich auf den Knoten zu, der das hat? onclcick Ereignis beigefügt, auf die geklickt wird, ohne eine Menge Code erstellen zu müssen, damit ich Kinder und Geschwister für die Knoten erstellen kann, die ich erstellt habe, und nicht nur für den Kofferraum?

HINWEIS:

Ich muss das tun ohne JQuery oder ein anderes Rahmen.

War es hilfreich?

Lösung

Wenn ein Element einen EventHandler hat, wird das Ereignisobjekt an den Ereignishandler übergeben. Dieses Ereignisobjekt hat unter anderem einen Hinweis auf den Knoten, der das Ereignis ausgelöst hat.

So...

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

Das Problem ist, dass die Eigenschaftennamen für verschiedene Dinge unterscheiden. Dies ist der Cross -Browser. Dies ist ein weiterer Reson, der ein Framework verwendet, da sie die Browser -Erkennung und spezifische Implementierungen implementieren, die Sie durchführen müssen, wenn Sie keine verwenden.

Weitere erweiterte Details finden Sie unter Quirksmode.org: http://www.quirksmodode.org/js/introevents.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top