在我写的程序中,我需要能够访问在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或其他框架。
答案 0 :(得分:0)
当元素具有eventhandler时,Event对象将传递给事件处理程序。此事件对象除其他外还引用了触发事件的节点。
因此...
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