@qpz

JavaScript как достать все ссылки из div'ов c нужным атрибутом?

Есть вот такой вот не самый приятный кусок кода
<div ng-repeat="link in filteredLink.dead | customFilter:positions" ng-show="showDead" class="el_list_link ng-scope">
  <div class="number ng-binding" ng-bind="$index+positions.start">1</div>
  <div class="link">
    <div>
      <a href="https://yandex.ru" target="_blank">
        <p class="ng-binding">https://yandex.ru</p>
      </a>
    </div>
  </div>
</div>
<div class="shadow"></div>


Мне нужно достать все ссылки из div-ов с атрибутом ng-show="showDead". Как это лучше сделать?

После этого мне надо открыть эти ссылки в новых вкладках. Использую вот такой код
btn.addEventListener('click', function() {
  for (var i = 0; i < links.length; i++) {
    window.open(links[i], '_blank');
  };
});


Где links это массив всех собранных ссылок.

Заранее спасибо!
  • Вопрос задан
  • 1111 просмотров
Решения вопроса 2
sergski
@sergski
web-developer
var links = [],
            el = document.querySelectorAll('.el_list_link');

        el.forEach(function( item ) {
            var link = item.querySelector( 'a' ).getAttribute('href');
            links.push( link );
        });
        for (var i = 0; i < links.length; i++) {
            window.open(links[i]);
        };
Ответ написан
@qpz Автор вопроса
Может быть это не самый элегантный метод, но все получилось благодаря следующему коду
var links = document.querySelectorAll('div[ng-show="showDead"] a');
var btn = document.querySelector('#open-links');

links.forEach(function(item) {
  item.classList.add('del-link');
});

var linksArr = document.getElementsByClassName('del-link')

btn.addEventListener('click', function() {
  for (var i = 0; i < linksArr.length; i++) {
    window.open(linksArr[i], '_blank');
  };
});


После присвоения нового класса элементам, с ними можно работать через метод getElementsByClassName, который соберёт все элементы и дальше прогоним их через счетчик
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Let links = Array.from(document.querySelectorAll('div[ng-show="showDead"] a'))
links.forEach(...)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
28 нояб. 2024, в 05:21
2000 руб./за проект
28 нояб. 2024, в 05:18
500 руб./за проект
28 нояб. 2024, в 03:51
3500 руб./за проект