我试图在函数触发时获取目标元素的id,但是`this`关键字返回`undefined`

时间:2012-09-19 07:17:15

标签: javascript javascript-events

我尝试在触发函数时捕获目标元素的id,但this关键字返回undefined

--- HTML文件。 ---(我无法在onclick函数中添加任何参数) 我在页面中有很多<a>标记,想要识别点击了<a>个标记。

<a href="#some_links" id="element_id" onclick = "object.pageName.functionName('parms1', 'parms2', 'parms3')">Get this object</a>

<a href="#some_links" id="second_element_id" onclick = "object.pageName.functionName('parms1', 'parms2', 'parms3')">Get this object</a>

--- .js文件---

object.pageName.functionName = function(a, b, c){
    alert(this); // returns 'undefined'
}

1 个答案:

答案 0 :(得分:3)

这是StackOverflow上一个非常常见的问题。

简而言之,你的onclick包含在一个匿名函数中(它可以访问this。你必须传递它。

--- HTML文件。 ---

<a href="#some_links" id="element_id" onclick = "object.pageName.functionName(this, 'parms1', 'parms2', 'parms3')">Get this object</a>

--- .js文件---

object.pageName.functionName = function(self, a, b, c){
    alert(self); // returns 'undefined'
}

这是另一种方式:

object.pageName.functionName = function(a, b, c){
    // Downside of this way, you can only use this function for one element.
    self = document.getElementById("element_id");
    alert(self);
}