JavaScriptオブジェクトメソッドのEventListenerを使用してノードを見つけます
-
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