我在document.body中有一些调用函数的javascript。现在我问自己,如果有可能(在函数内),调用domnode,而不将其传递给函数?
答案 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树中的位置。