addEventListener срабатывает на вложенный объект.
Вот есть ссылка(обратите внимание, что текст у неё выделен жирным):
<a id="accept" href="http://bla-bla.ru"><b>Принять</b></a> Назначаю ей функцию при клике:
document.querySelector('#accept').addEventListener('click', {handleEvent: reply_guild})
Это сама функция:
function reply_guild(event)
{
event.preventDefault() // Отмена перехода по ссылке
alert(this + ' ' + event + ' ' + event.target) // Вывести ид объекта
alert(this.href + ' ' + event.href + ' ' + event.target.href) // Вывести href объекта
alert(this.innerHTML + ' ' + event.innerHTML + ' ' + event.target.innerHTML) // Вывести текст объекта
alert(document.querySelector('#accept')) // Вывести href ссылки, просто для проверки
}
Вот что выдаёт: Цитата:
Цитата:
Цитата:
Цитата:
Так вот, функция срабатывает на клик, но отправляет в неё идентификатор <b> а не <a>. Как исправить? |
event.preventDefault() // Отмена перехода по ссылке
alert(event.target.tagName) //щелчок по В
alert(event.target.parentNode.tagName) //а А, это родитель
|
//можно передать указатель на элемент на событие которого повешен обработчик события
var el = document.getElementById('accept'); el.addEventListener('click', function(event) {reply_guild(event, el);}); function reply_guild(event, e) { event.preventDefault(); alert('e.id - ' + e.id); alert('e.href - ' + e.href); alert('event.target.tagName - ' + event.target.tagName); } |
Спасибо ))
Сделал так:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script type="text/javascript">
function reply_guild(e)
{
event.preventDefault() // Отмена перехода по ссылке
var ref = e.target.href
if(!ref) ref = e.target.parentNode.href
alert(ref)
}
function main()
{
document.querySelector('#accept').addEventListener('click', {handleEvent: reply_guild})
document.querySelector('#skip').addEventListener('click', {handleEvent: reply_guild})
}
document.addEventListener('DOMContentLoaded', main)
</script>
</head>
<body>
<center>
<a id="accept" href="/bla-bla.php?action=accept"><b>Принять</b></a>
<br>
<a id="skip" href="/bla-bla.php?action=skip">Отказаться</a>
</center>
</body>
</html>
|
Артист,
попробуйте в <A><B>text</B></A> щелкнуть вне тега В. |
Это как? Если текст ссылки весь в теге, а щелкается только на тексте...
|
А вот так. Если к примеру в ячейке таблицы, у которой есть внутренние отступы помещена картинка, то можно сделать щелчок по картинке, и по ячейке в области отступов.
У вас теги приписаны без отступов, то есть нет даже пробелов, которые бы принадлежали тегу А, как можно при этом сделать по нему щелчок? |
А, это я знаю.
Но у меня просто ссылки, на странице... |
Цитата:
<a id="accept" href="http://bla-bla.ru"><b>Принять</b></a>
<script type='text/javascript'>
document.querySelector('#accept').addEventListener(
'click',
reply_guild,
false
);
function reply_guild(event) {
event.preventDefault() // Отмена перехода по ссылке
alert(this.tagName);
alert(this + ' ' + event + ' ' + event.target) // Вывести ид объекта
alert(this.href + ' ' + event.href + ' ' + event.target.href) // Вывести href объекта
alert(this.innerHTML + ' ' + event.innerHTML + ' ' + event.target.innerHTML) // Вывести текст объекта
alert(document.querySelector('#accept')) // Вывести href ссылки, просто для проверки
};
</script>
|
Я от такого способа отказался, потому, что мне ещё 2 или 1 параметр нужно передать ))
Но всё равно спасибо )) |
| Часовой пояс GMT +3, время: 14:50. |