2016-09-29 2 views
0

Я использую это:Найти элементы с помощью InnerText

document.querySelectorAll('div.pu-g div.pure-u div.des.3-mb-1 div.ng-spe span.ng-binding.ng-scope[contains(text(),'Stock')]') 

, но я получаю эту ошибку:

SyntaxError: missing) after argument list 

То, что я пытаюсь сделать, это принять все элементы, которые содержат в InnerText конкретное слово. Можно ли сделать это в простой DOM с JS?

+0

Параметр ' '' конфликтуют – Li357

ответ

0

Поскольку текст элемента не является атрибутом, я не думаю, что вы можете его захватить с помощью селектора атрибутов. Тем не менее, вы можете фильтровать NodeList для возврата элементов, которые include слова «Stock» в их textContent.

const stocks = [...document.querySelectorAll("div.pu-g div.pure-u div.des.3-mb-1 div.ng-spe span.ng-binding.ng-scope")] 
    .filter(elements => elements.textContent.includes("Stock")) //note that `includes` is case sensitive 

Это код ES6 с использованием спреда и лямбда. Вот решение ES5.

var stocks = [].slice.call(document.querySelectorAll("div.pu-g div.pure-u div.des.3-mb-1 div.ng-spe span.ng-binding.ng-scope").filter(function(elements) { 
    return elements.textContent.includes("Stock"); 
}) 
+0

Как я могу понять, что это не возможно, чтобы использовать что-то в DOM? Я имею в виду, т. Е. Document.querySelectorAll (''). Filter() – Mati

+0

'filter' - это функция массива, вам нужно преобразовать NodeList' document.querySelectorAll' в массив для использования указанных функций на нем. –

Смежные вопросы