Я использую 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>
Добавьте console.info()
звонки, чтобы увидеть, что у вас есть. Но я все еще сомневаюсь, что это код, который у вас есть.
Это не должно вызывать ошибку. Вы уверены, что загружаете html перед скриптом (элементы существуют)?
В вашем коде синтаксические ошибки
Должно быть:
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. Я обнаружил, что в соответствии с вашим кодом вы можете добиться логики без ошибок. Вы можете запустить код несколько раз.
это интересно, это то, чего я пытаюсь добиться
querySelector имеет огромную совместимость с браузерами. Даже хром v1 developer.mozilla.org/en-US/docs/Web/API/Document/querySelector
Ха-ха, да. В начале я также думал, что queryselector очень совместим, но я не могу вспомнить, какая версия начала быть совместимой. Теперь я знаю, я сказал совместимость браузеров ради безопасности.
Покажите нам html. И вы не получите такие текстовые и href-строки, а только элементы, чтобы вы знали.