<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
знать, какой элемент запустил его? Без прохождения/поиска идентификаторов.
Ответы
Ответ 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
, вам нужно будет сделать что-то вроде этого вопроса.