Подтвердить что ты не робот

<a href= "https://stackoverflow.com/javascript:foo(this)" rel="nofollow noreferrer" >проходит окно, я хочу, чтобы сам элемент тега

Я ожидаю, что это напечатает "a", потому что, когда я вызываю foo(this), аргумент кажется тегом ссылки.

<script type="text/javascript">
    function foo (e) {
        alert (e .tagName);
    }
</script>
<a href="javascript:foo(this)">click</a>

Вместо этого он печатает "undefined". Если я alert(e), он говорит "окно объекта". Как мне сделать foo знать, какой элемент запустил его? Без прохождения/поиска идентификаторов.

4b9b3361

Ответ 1

Вы не должны использовать href для JavaScript. Плохая практика, вместо этого используйте onclick и this будет волшебным образом указывать на ссылку.

<a href="#" onclick="foo(this)">click</a>

Вам также необходимо отменить действие клика по ссылке. Либо с возвратом false, либо с отменой события с preventDefault.

Лучше прикрепить событие с помощью ненавязчивый JavaScript

Ответ 2

Вы можете сделать это прямо тоже

<a href="#" onclick="alert(this.tagName);">click</a>​

Ответ 3

<a href="#" onclick="foo(this)">click</a>

function foo(obj) {
    alert(obj.tagName);
}​

Не вызывайте элемент e его стандартом для объекта события.

JSfiddle DEMO

Ответ 4

Объект this не обрабатывается одинаково во всех браузерах. Это один из многих элементов, которые библиотеки, такие как Prototype и jQuery, пытаются нормализовать. Тем не менее, большинство браузеров передают соответствующий this в течение onclick дескриптора (а не href), как указывали многие другие ответы. Если вы хотите соответствующим образом обрабатывать this, вам нужно будет сделать что-то вроде этого вопроса.