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

問題は、異なるものの異なるクロスブラウザのプロパティ名です。これは、ブラウザー検出と使用しない場合に必要な特定の実装を実装するため、フレームワークを使用するための別のレゾンです。

いくつかの高度な詳細については、quirksmode.orgを参照してください。 http://www.quirksmode.org/js/introevents.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top