Есть такой код:
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;
}
}
Результат такой же. Подскажите, что я делаю не так?
Для получения значения атрибута элемента используйте getAttribute. В вашем случае, код будет выглядеть так:
let l = document.getElementsByTagName("a");
for (k in l){
l[k].onclick = function(){
alert(this.getAttribute('href'));
return false;
}
}
Первый пример и так работает, а во-втором, ты пропустил инициализацию переменной, как и в первом, но в отличии от первого, второй, что бы от заработал надо в место 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>
Вполне всё работает:
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>
возможно ваш код выполняется до загрузки всего документа?
Думаю, что в данном случае лучше использовать for..of
for (let anchor of document.getElementsByTagName("a")) {
anchor.addEventListener('click', doNothing);
}
const doNothing = e => {
console.log(e.target.getAttribute('href'));
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости