Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Определение количества элементов на странице с определенным текстом (https://javascript.ru/forum/events/80966-opredelenie-kolichestva-ehlementov-na-stranice-s-opredelennym-tekstom.html)

vladik3333 03.09.2020 11:07

Определение количества элементов на странице с определенным текстом
 
Здравствуйте. имеется html:
<span class="test">текст1</span>
<span class="test">текст1</span>
<span class="test">текст2</span>
<span class="test">текст1</span>
<span class="test">текст2</span>
<span class="test">текст1</span>


Нужно определить количество элементов(все одинаковы), с определенным текстом.
Месяц назад я задавал похожий вопрос, только нужно было найти первый индекс с нужным текстом. Тогда уважаемый рони посоветовал мне этот код:
var str = 'текст2';
var index = [...document.querySelectorAll("span[class='test']"].findIndex(({textContent}) => textContent.includes(str));
alert(index);

Ну то есть выдает позицию первого совпавшего элемента. Теперь нужно тоже самое только общее количество элементов с таким текстом(в данном случае "текст2", то есть alert должен выводить 2). Я не очень понимаю как тут можно использовать length вместо findIndex, или что-то другое использовать

рони 03.09.2020 12:44

Цитата:

Сообщение от vladik3333
findIndex

заменить на ...

vladik3333 03.09.2020 13:19

На что? На length?
Пробовал, не работает
var str = 'текст2';
var index = [...document.querySelectorAll("span[class='test']")].length(({textContent}) => textContent.includes(str));
alert(index);

Uncaught TypeError: [(...document.querySelectorAll(...))].length is not a function

рони 03.09.2020 13:27

Цитата:

Сообщение от vladik3333
length

Методы массивов выберите нужное.

рони 03.09.2020 13:40

vladik3333,
...

<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>
<body>
<span class="test">текст1</span>
<span class="test">текст1</span>
<span class="test">текст2</span>
<span class="test">текст1</span>
<span class="test">текст2</span>
<span class="test">текст1</span>
<script>
let str = 'текст2';
let {length} = [...document.querySelectorAll("span.test")].filter(({textContent}) => textContent.includes(str));
alert(length);
</script>
</body>
</html>

vladik3333 03.09.2020 13:49

ясно спасибо


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