Как получить элемент, который вызвал событие «onclick», не передавая аргумент события? - PullRequest
1 голос
/ 20 августа 2011

Как я могу получить элемент 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 ]

2 голосов
/ 20 августа 2011

Вы можете использовать Function.prototype.call для установки контекста функции, например:

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

Было бы так же легко передать это как аргумент.

2 голосов
/ 20 августа 2011

Попробуйте этот HTML-код:

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

и JS:

function ajax(caller_element, url)
{
 alert(caller_element.innerHTML);
 ...xmlhttp(url)...
}
0 голосов
/ 20 августа 2011

Это невозможно без изменения HTML. Если позволяет ваша ситуация, вы можете использовать тег id ...

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

function ajax(url) {
    alert(document.body.getElementById("whatever").innerHTML);
    ...xmlhttp(url)...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...