2017-08-23 32 views
0

叫我有我的网页上的许多链接像这样使用这个关键字:当函数从超级链接

<a href="javascript:Test.Test(this);">Testing</a> 

随着this关键字我期待获得该功能的HTML元素的所有者。但是,它显示我window对象。这是为什么?我如何获得(使用上面使用的代码)HTML元素,该函数的所有者?

在我的网页,HTML结构要复杂得多。每一个超链接是一些其他的元素里面,所以如果this正显示出当前元素,那么很容易得到父元素。

var Test = function(){ 
 
    
 
    var Test = function(element){ 
 
    
 
    debugger; 
 
    
 
    } 
 
    
 
    return { 
 
    Test: Test 
 
    } 
 
}();
<div data-iuser_key='49499'> 
 
<a href="javascript:Test.Test(this);">Testing</a> 
 
</div>

+0

那是不可能的。你应该使用事件处理程序。 – SLaks

回答

1

什么办法?您的代码在javascript:内运行,其中没有对目标元素的引用。默认情况下,thiswindow

相反,使用正确的点击处理程序:

<a href="#" onclick="Test.Test(this)"> 
+0

JavaScript在这种情况下表示什么?浏览器对象模型? – FrenkyB

+0

'的JavaScript:'是从旧时代留下了一个供应商特定的前缀。它不是任何规范的一部分,但通常'this'被称为'window'。 –

+0

在你的代码中,我已经删除的href =“#”,因为它会导致页面导航到顶部。没有这一点,一切都按预期工作,这是在函数内部称为函数的元素持有者。 – FrenkyB