如何在不传递事件参数的情况下获取触发“onclick”事件的元素?

时间:2011-08-20 09:55:29

标签: javascript dom

在这种情况下,如何获取触发onclick的DOM元素:

<div onclick="ajax('?section=panel');">Hi</div>

和ajax函数是:

function ajax(url)
{
 alert(caller_element.innerHTML); // I need `caller_element` contain a reference to that DIV
 ...xmlhttp(url)...
}

请注意,我无法更改HTML,我只能更改ajax()功能。

3 个答案:

答案 0 :(得分:2)

试试这个HTML代码:

<div onclick="ajax(this, '?section=panel');">Hi</div>

和JS:

function ajax(caller_element, url)
{
 alert(caller_element.innerHTML);
 ...xmlhttp(url)...
}

答案 1 :(得分:2)

您可以使用Function.prototype.call设置函数的上下文,如下所示:

<div onclick="ajax.call(this, '?section=panel');">Hi</div>
function ajax(url) {
    alert(this.innerHTML);
    ...xmlhttp(url)...
}

尽管如此,传递它作为一个论点也同样容易。

答案 2 :(得分:0)

如果不修改HTML,这是不可能的。如果您的情况允许,您可以使用id代码...

<div id="whatever" onclick="ajax('?section-panel');">Hi</div>

function ajax(url) {
    alert(document.body.getElementById("whatever").innerHTML);
    ...xmlhttp(url)...
}