Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.11.2016, 22:52
Профессор
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 163

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 ссылки, просто для проверки
}

Вот что выдаёт:
Цитата:
[object Object] [object MouseEvent] [object HTMLElement]
Цитата:
undefined undefined undefined
Цитата:
undefined undefined Принять
Цитата:
http://bla-bla.ru

Так вот, функция срабатывает на клик, но отправляет в неё идентификатор <b> а не <a>.
Как исправить?
Ответить с цитированием
  #2 (permalink)  
Старый 27.11.2016, 12:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

event.preventDefault() // Отмена перехода по ссылке
    alert(event.target.tagName) //щелчок по В
    alert(event.target.parentNode.tagName) //а А, это родитель
Ответить с цитированием
  #3 (permalink)  
Старый 27.11.2016, 17:41
Новичок на форуме
Отправить личное сообщение для moonwwwind Посмотреть профиль Найти все сообщения от moonwwwind
 
Регистрация: 27.11.2016
Сообщений: 2

//можно передать указатель на элемент на событие которого повешен обработчик события
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);
}
Ответить с цитированием
  #4 (permalink)  
Старый 27.11.2016, 20:19
Профессор
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 163

Спасибо ))

Сделал так:
<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>

Последний раз редактировалось Артист, 27.11.2016 в 20:24.
Ответить с цитированием
  #5 (permalink)  
Старый 28.11.2016, 01:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Артист,
попробуйте в <A><B>text</B></A> щелкнуть вне тега В.
Ответить с цитированием
  #6 (permalink)  
Старый 28.11.2016, 01:29
Профессор
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 163

Это как? Если текст ссылки весь в теге, а щелкается только на тексте...
Ответить с цитированием
  #7 (permalink)  
Старый 28.11.2016, 02:16
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А вот так. Если к примеру в ячейке таблицы, у которой есть внутренние отступы помещена картинка, то можно сделать щелчок по картинке, и по ячейке в области отступов.

У вас теги приписаны без отступов, то есть нет даже пробелов, которые бы принадлежали тегу А, как можно при этом сделать по нему щелчок?
Ответить с цитированием
  #8 (permalink)  
Старый 28.11.2016, 10:39
Профессор
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 163

А, это я знаю.
Но у меня просто ссылки, на странице...
Ответить с цитированием
  #9 (permalink)  
Старый 28.11.2016, 11:21
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,137

Сообщение от Артист
Назначаю ей функцию при клике:
document.querySelector('#accept').addEventListener('click', {handleEvent: reply_guild})

...
Как исправить?
Как вариант...

<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>
Ответить с цитированием
  #10 (permalink)  
Старый 28.11.2016, 12:09
Профессор
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 163

Я от такого способа отказался, потому, что мне ещё 2 или 1 параметр нужно передать ))
Но всё равно спасибо ))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить объект в другой объект фонарик Общие вопросы Javascript 5 11.10.2015 01:57
addEventListener не срабатывает? ViRuSreloaded Элементы интерфейса 11 13.11.2014 11:33
Создать объект в объекте Bryant-24 Общие вопросы Javascript 3 10.07.2013 16:06
jQuery (Как открыть объект в этом же окне, щёлкнув по нему мышкой) Объект кусок карты hadzhimuratov (X)HTML/CSS 32 18.06.2012 17:54
Передать ссылку на объект а не объект возникновения события Blazze Events/DOM/Window 0 11.10.2011 00:45