Расположение узла с EventListener в методе JavaScript Object
-
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 или другая рамка.
Решение
Когда у элемента есть Eventhandler, объект события передается обработчику события. Этот объект события имеет, помимо прочего, ссылка на узел, который вызвал событие.
Так...
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);
Проблема заключается в том, что имена свойств для разных вещей отличаются от Cross Browser - это еще один резон для использования рамки, поскольку они будут реализовать определение в браузере и конкретные реализации, которые вам нужно будет сделать, если вы не будете использовать его.
См. Quirksmode.org для некоторых расширенных деталей: http://www.quirksmode.org/js/introevents.html