Как перебрать внутренние элементы в «document.querySelector»

Я использую chrome devtools для проверки html. У меня есть этот код, где я применяю querySelector для внутренних элементов:

var x = document.querySelectorAll(".search__results-list li");
var myarray = []
for (var i=0; i<x.length; i++){
    const href = x[i].querySelector('.ahchor[href]');
    const text = x[i].querySelector('.text-field');

    myarray.push([href, text]);
};

querySelector не существует на x[i], выдает ошибку Uncaught TypeError: [...].querySelector is not a function как это исправить?

вот образец html, на самом деле там много ли:

<ul class = "search__results-list">
  <li class = "search__result-container">
    <div class = "search-result">
      <div class = "search-result__item">
        <div class = "search-result_block">
          <div class = "center">
            <a class = "ahchor" href = "somesite.com/a">
              <div>
                <div class = "wrapper">
                  <div class = "entity">
                    <div class = "text-field">content here</div>
                  </div>
                </div>
              </div>
            </a>
          </div>
        </div>
      </div>
    </div>
  </li>
</ul>

Покажите нам html. И вы не получите такие текстовые и href-строки, а только элементы, чтобы вы знали.

digitalniweb 17.02.2023 08:40

Добавьте console.info() звонки, чтобы увидеть, что у вас есть. Но я все еще сомневаюсь, что это код, который у вас есть.

Kaiido 17.02.2023 08:41

Это не должно вызывать ошибку. Вы уверены, что загружаете html перед скриптом (элементы существуют)?

digitalniweb 17.02.2023 09:27
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
3
57
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

В вашем коде синтаксические ошибки

Должно быть:

var x = document.querySelectorAll(".search__results-list li");
var myarray = []
for (var i = 0; i < x.length; i++) {
    const href = x[i].querySelector('.ahchor[href]');
    const text = x[i].querySelector('.text-field');

    myarray.push([href, text]);
};

Этот код должен работать, если вы написали классы правильно и в соответствии с вашим html


Вы можете проверить этот код даже в консоли, он отлично работает. Но я не нашел обертки с 2 элементами и дважды использовал .m6

введите здесь описание изображения

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

это интересно, это то, чего я пытаюсь добиться

Sergino 17.02.2023 08:49

querySelector имеет огромную совместимость с браузерами. Даже хром v1 developer.mozilla.org/en-US/docs/Web/API/Document/querySelec‌​tor

rycha 17.02.2023 08:59

Ха-ха, да. В начале я также думал, что queryselector очень совместим, но я не могу вспомнить, какая версия начала быть совместимой. Теперь я знаю, я сказал совместимость браузеров ради безопасности.

Vfdsd 17.02.2023 09:12

Другие вопросы по теме