Javascript, получение адреса ссылки по событию click

226
02 января 2018, 16:48

Есть такой код:

let l = 
document.getElementsByTagName("a");
for (k in l){
l[k].onclick = function(){
alert(this.href);
return false;
}
}

Он должен вывести адрес ссылки, я получаю undefined. Пробовал ещё так:

let l = 
document.getElementsByTagName("a");
for (k in l){
l[k].onclick = function(){
alert(l[k].href);
return false;
}
}

Результат такой же. Подскажите, что я делаю не так?

Answer 1

Для получения значения атрибута элемента используйте getAttribute. В вашем случае, код будет выглядеть так:

let l = document.getElementsByTagName("a");
for (k in l){
  l[k].onclick = function(){
    alert(this.getAttribute('href'));
    return false;
  }
}
Answer 2

Первый пример и так работает, а во-втором, ты пропустил инициализацию переменной, как и в первом, но в отличии от первого, второй, что бы от заработал надо в место var выбрать let подробнее тут ответ Grundy

let l = 
  document.getElementsByTagName("a"); 
for (let k in l) { 
  l[k].onclick = function() { 
    alert(l[k].href); 
    return false; 
  } 
}
<a href="https://ya.ru">https://ya.ru</a> 
<a href="https://google.com">https://google.com</a>

Answer 3

Вполне всё работает:

let l =  document.getElementsByTagName("a"); 
for (k in l) { 
  l[k].onclick = function() {     
    console.log(this.href); 
    return false; 
  } 
}
<a href="http://google.com" id="ttt">test</a> 
<a href="http://go123ogle.com"  id="tt23t">test2</a>

возможно ваш код выполняется до загрузки всего документа?

Answer 4

Думаю, что в данном случае лучше использовать for..of

for (let anchor of document.getElementsByTagName("a")) {
  anchor.addEventListener('click', doNothing);
}
const doNothing = e => {
  console.log(e.target.getAttribute('href'));
}
READ ALSO
View в Spring MVC

View в Spring MVC

Здравствуйте, уважаемые коллеги! Осваиваю Spring MVC уверенными шагами, но есть один вопрос на который не могу найти внятного ответаВ данный момент...

231
Не работает array_unique

Не работает array_unique

$mix - массив объединяет массивы со словами, разделенными по пробеламarray_unique в данном случае не работает и на выходе слова дублируются

256
Правильное построение where для маршрутов laravel

Правильное построение where для маршрутов laravel

Всем приветЕсть следующий маршрут:

205
Минимально необходимые параметры для PHP-FPM?

Минимально необходимые параметры для PHP-FPM?

В документации NGINX указано, что минимально необходимые параметры это:

240