Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.10.2024, 10:23
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 770

Отловить событие клика
Всем привет. На сайте нужно сделать функционал, один из элементов,это отлов внешних ссылок. И что не выходит все ссылки отлавливать. Некоторые никак не реагируют на код. Не понимаю с чем это связанно. Вот код
var a = document.querySelectorAll("a");
for (var i = 0; i < a.length; i++) {
a[i].onclick = function (e) {
console.log(a[i])
}
}


До клика, все ссылки в логе есть. Если ссылка на сайте прописана в тексте статьи, например, то такая ссылка реагирует на код, а если, скажем в меню, то нет. Ссылки у которых в href javascrupt:; в расчёт не беру.
Вот страница сайта
https://bolgow.ru/articles/11-obsche...ogo-opyta.html
В тексте есть ссылка на яндекс. Она "работает", а в меню ссылка на тот же яндекс, нет.
В чём дело может быть?
Ответить с цитированием
  #2 (permalink)  
Старый 27.10.2024, 13:20
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

ureech,
https://learn.javascript.ru/introduc...deventlistener
Ответить с цитированием
  #3 (permalink)  
Старый 27.10.2024, 13:54
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 770

Спасибо.Хоть дело и не в этом, но это помогло понять причину. Дело в структуре. В некоторых ссылках нет target.host
Ответить с цитированием
  #4 (permalink)  
Старый 28.10.2024, 07:40
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,743

Вы там в обработчике клика используете e.target. Но target это не тот же элемент на котором висит обработчик, а тот элемент, по которому кликнули. Если там конструкция
<a href="...">
    <span>Яндекс</span>
</a>

то target - это <span>, а <a>.
Если нужен именно элемент, на котором установлен обработчик, то используйте this
Ответить с цитированием
  #5 (permalink)  
Старый 28.10.2024, 07:49
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,574

Во-первых: приведённый код вообще работать не будет - используется var, а потому i на момент клика всегда будет равна a.length.

Во-вторых: если же вы где-то там у себя уже поправили на использование target, надо было дальше читать по приведённой Белый шум ссылке - вам нужен currentTarget. Почему - объяснил voraa.
__________________
29375, 35

Последний раз редактировалось Aetae, 28.10.2024 в 07:51.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отловить событие перемещения маркера Янковиц Элементы интерфейса 3 20.07.2018 10:18
Как отловить событие в contenteditable? D_Pavel Events/DOM/Window 10 21.01.2014 16:08
Событие клика для label с чекбоксом debugx Events/DOM/Window 2 28.10.2011 09:43
Отловить событие simple Events/DOM/Window 3 11.05.2011 14:20
Отловить событие изменения элемента pavl Events/DOM/Window 13 13.04.2009 14:00