Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Найти класс в классе (https://javascript.ru/forum/misc/76828-najjti-klass-v-klasse.html)

vburyagin 18.02.2019 16:12

Найти класс в классе
 
Здравствуйте.
Помогите пожалуйста. Прочитал кучу документации и ничего подходящего не нашел. Вообщем задача следующая. Есть код:

<div class="grid-col-5 x-offset-col-md-s text-right">
<p class="text-button-uppercase-sm text-primary-low ng-binding" ng-bind-html="::vm.getPrice() | currencyUnit">
<span class="currency-amount">100,00 </span>
<span class="currency-unit currency-unit-rub">₽</span>
</p>
<p class="result text-body2-short-fat up-sm ng-binding" ng-bind-html="vm.profit$ | async:this | currencyUnit">
<span class="currency-amount">200,00 </span>
<span class="currency-unit currency-unit-rub">₽</span>
</p>
</div>

Мне нужно найти и вытащить значения в переменные из <span> с классом currency-amount. Соответственно если использовать:

var summa1 = content.document.getElementsByClassName('currency-amount')[1].innerHTML.match(/\d/g).join('').toString()

и

var summa2 = content.document.getElementsByClassName('currency-amount')[2].innerHTML.match(/\d/g).join('').toString()

то все ок. Но проблема в том, что страница динамическая и индексы у этих классов относительно все страницы постоянно меняются. Править их постоянно руками - не дело. Но вот сам контейнер DIV имеет уникальный класс: grid-col-5. И если представлять массив из классов: currency-amount внутри этого DIV, то индексы будут постоянные и проблема решиться. Так вот как мне найти сначала этот DIV а внутри него уже и нужные мне классы с индексом 1 и 2

Если бы DIV имел ID или NAME атрибуты, то было бы проще, а тут все на классах. Помогите пожалуйста.

Делаю это в iMacros 8.9.7

MC-XOBAHCK 18.02.2019 22:18

document.querySelector для поиска элемента по css селекторам.
document.querySelectorAll - поиск всех элементов по селектору.

Всё как в css:
# - айдишник
. - класс
и т.д.

let prices = document.querySelectorAll('.currency-amount');
let all = [];

prices.forEach(el => all.push(el.innerText));


Получим all - вот такой массив строк с ценниками (с пробелами и запятыми):
["100,00 ", "200,00 "]

ksa 19.02.2019 08:36

Цитата:

Сообщение от vburyagin
Прочитал кучу документации и ничего подходящего не нашел.

Да брось, ты! :D


Часовой пояс GMT +3, время: 18:35.