Просмотр полной версии : Ошибка: forEach is not a function
DDim1000
16.05.2020, 21:08
Здравствуйте!
Подскажите, пожалуйста, почему возникает ошибка tours_list.forEach is not a function?
var tours_list = document.querySelectorAll(".item-tour-pay-list > .item-tour-pay-inform ");
tours_list.forEach(function(tours, t) {
country = tours.querySelectorAll(".item-tour-title-block small");
price = tours.querySelectorAll(".block-side .price");
for (var i = 0; i < country.length; i++) {
if(country[i].textContent.indexOf('Брюки') !== -1){
var inputD = country[i].textContent;
for (var l = 0; l < price.length; l++){
console.log(inputD+' '+price[i].textContent );
}
}
}
t++;
})
DDim1000,
встречный вопрос: зачем нужно бессмысленное t++?
DDim1000
17.05.2020, 13:57
Возникла другая ошибка: Uncaught SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode.
Я передаю код JS в Chromium, и не могу понять, эта ошибка JS, или Chromium?
JS:= 'var tours_list = document.querySelectorAll(".item-tour-pay-list > .item-tour-pay-inform ");'+
'alert("Test");'+
'tours_list.forEach(function(tours) { '+
''+
'alert("Test 2");'+
'})';
Chromium1.Browser.GetMainFrame.ExecuteJavaScript(J S, 'about:blank', 0);
JS:= - это что? Так в Delphi присваивают.
DDim1000
17.05.2020, 14:57
JS:= - это что? Так в Delphi присваивают.
Дак, это и есть Delphi. Я переменной Delphi присваиваю JS-код и передаю в Chromium
Ошибка гласит об этом (https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Strict_mode) - указанное в скобках вне строго режима не поддерживается.
DDim1000
17.05.2020, 15:28
Ошибка гласит об этом (https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Strict_mode) - указанное в скобках вне строго режима не поддерживается.
А как привести к строгому режиму?
Так по ссылке же все написано, почитайте, пригодится.
DDim1000
17.05.2020, 16:32
Скажите, пожалуйста, можно ли как-то по другому реализовать приведенный мною код?
можно ли как-то по другому реализовать приведенный мною код?
В каком смысле по другому?
DDim1000
17.05.2020, 18:12
Объясню задачу.
Есть список стран, страна \ столица. Названия страны и название ее столицы размещены в разных div.
Нужно вывести на console строну и ее столицу.
<div>
<div class="1">
<div class="2">
<div class="3">
<p>Россия</p>
</div>
<div class="4">
<p>Москва </p>
</div>
</div>
</div>
<div class="1">
<div class="2">
<div class="3">
<p>США</p>
</div>
<div class="4">
<p>Вашингтон </p>
</div>
</div>
</div>
<div class="1">
<div class="2">
<div class="3">
<p>Германия</p>
</div>
<div class="4">
<p>Берлин </p>
</div>
</div>
</div>
</div>
Откуда такие странные имена классов?
Для вывода нужно получить коллекцию, а как кроме как обходом ее в цикле можно это сделать?
DDim1000
17.05.2020, 19:45
Откуда такие странные имена классов?
Это просто пример))...
Для вывода нужно получить коллекцию, а как кроме как обходом ее в цикле можно это сделать?
Ну, коллекцию мы получим таким образом: var Countries = document.querySelectorAll(".countrie_capital");
А как правильно организовать цикл?
<div>
<div class="countries_capitals">
<div class="countrie_capital">
<div class="country">
<p>Россия</p>
</div>
<div class="capital">
<p>Москва </p>
</div>
</div>
</div>
<div class="countrie_capital">
<div class="name_capitals">
<div class="country">
<p>США</p>
</div>
<div class="capital">
<p>Вашингтон </p>
</div>
</div>
</div>
<div class="countrie_capital">
<div class="name_capitals">
<div class="country">
<p>Германия</p>
</div>
<div class="capital">
<p>Берлин </p>
</div>
</div>
</div>
</div>
DDim1000,
<!doctype html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div>
<div class="countries_capitals">
<div class="countrie_capital">
<div class="country">
<p>Россия</p>
</div>
<div class="capital">
<p>Москва </p>
</div>
</div>
</div>
<div class="countrie_capital">
<div class="name_capitals">
<div class="country">
<p>США</p>
</div>
<div class="capital">
<p>Вашингтон </p>
</div>
</div>
</div>
<div class="countrie_capital">
<div class="name_capitals">
<div class="country">
<p>Германия</p>
</div>
<div class="capital">
<p>Берлин </p>
</div>
</div>
</div>
</div>
<script>
var Countries = document.querySelectorAll(".countrie_capital");
for(const el of Countries) {
const a = [...el.querySelectorAll(".country, .capital")].map(({textContent}) => textContent.trim());
document.write(`${a}<br>`)
}
</script>
</body>
</html>
DDim1000
17.05.2020, 22:01
рони, спасибо большое!!!
DDim1000
21.05.2020, 20:53
Доброе время суток!
Возник еще один вопрос:
Как получить содержимое элемента, при такой структуре кода? Нужно вывести страна\население.
<div class="content">
<div class="grid-string ">
<div class="grid-item">5.</div>
<div class="grid-item"><span class="sp-icon" style="background-image: url('fi.png')"></span>Население России</div>
<div class="grid-item" style="width: 8%;">2</div>
<div class="grid-item" style="width: 8%; margin-right: 10px;"></div>
<div class="grid-item">
146 800 000 чел.</div>
<div class="grid-item off-ds"></div>
</div>
<div class="grid-string ">
<div class="grid-item">6.</div>
<div class="grid-item"><span class="sp-icon" style="background-image: url('am.png')"></span>Население США</div>
<div class="grid-item" style="width: 8%;">1</div>
<div class="grid-item" style="width: 8%; margin-right: 10px;"></div>
<div class="grid-item">328 915 700 чел.</div>
<div class="grid-item off-ds"></div>
</div>
</div>
Вот так, выводится только из первых контейнеров div:
var list_orders = document.querySelectorAll(".content > .grid-string ");
for (var i = 0; i < list_orders.length; i++) {
country = list_orders[i].querySelector(".grid-item").textContent
console.log(country);
}
DDim1000,
<!doctype html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
.content {
background-color: #5458CC;
}
</style>
</head>
<body>
<div class="content">
<div class="grid-string ">
<div class="grid-item">5.</div>
<div class="grid-item"><span class="sp-icon" style="background-image: url('fi.png')"></span>Население России</div>
<div class="grid-item" style="width: 8%;">2</div>
<div class="grid-item" style="width: 8%; margin-right: 10px;"></div>
<div class="grid-item">
146 800 000 чел.</div>
<div class="grid-item off-ds"></div>
</div>
<div class="grid-string ">
<div class="grid-item">6.</div>
<div class="grid-item"><span class="sp-icon" style="background-image: url('am.png')"></span>Население США</div>
<div class="grid-item" style="width: 8%;">1</div>
<div class="grid-item" style="width: 8%; margin-right: 10px;"></div>
<div class="grid-item">328 915 700 чел.</div>
<div class="grid-item off-ds"></div>
</div>
</div>
<script>
var list_orders = document.querySelectorAll(".content > .grid-string :nth-child(3n + 2):nth-child(-n + 5)");
for (var {textContent} of list_orders) {
document.write(textContent+"<br>")
}
</script>
</body>
</html>
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot