我怎么能得到调用我的函数的节点?

时间:2009-11-03 22:50:47

标签: javascript

我在document.body中有一些调用函数的javascript。现在我问自己,如果有可能(在函数内),调用domnode,而不将其传递给函数?

3 个答案:

答案 0 :(得分:2)

'this'关键字可能就是您所需要的。信息在这里:http://www.quirksmode.org/js/this.html

答案 1 :(得分:0)

有两种方法可以做到这一点。一种是在函数内使用'this'。它引用了执行范围,在您的情况下它将是dom元素。

但是,只要您开始使用对象可能会出现问题,那么传递事件并使用其目标会更好。有点像:

... onclick="myObject.myFunction( event )" ..

myClass.prototype.myFunction = function ( event )
{
   event.target == myNode
}

当然,使用后一种方法,您实际上可以访问您可能想要对事件执行的大量其他事情:)

答案 2 :(得分:0)

我不确定你在“document.body”中的一些javascript是什么意思。

如果它是一个事件处理程序,你可以得到这样的事件目标元素:

function myHandler(e){
    e = e || window.event; /* IE fallback */
    var node = e.target || e.srcElement; /* IE fallback */
}

但如果它是< script />中的一段代码element(内联代码或外部文件)也可以找到它在DOM树中的执行位置:

 <div>
 <script type="text/javascript">
 (function(){
   var scripts = document.getElementsByTagName('script');
   var node = scripts[ scripts.length-1 ].parentNode;
 }())
 </script>
 </div>

第二个例子使用一个立即执行的匿名函数,这意味着&lt; script /&gt; element是执行时DOM树中的最后一个元素。因此,您可以访问其父节点,以找出您的函数在DOM树中的位置。