Примечание: Это ответило на вопрос, который был первоначально опубликован, , который был :
Как выбрать элемент, используя его текстовое содержимое с документом.querySelector?
Из комментариев выяснилось, что это не настоящий вопрос ОП, хотя на этот вопрос хорошо ответил пост Андерссона .Я оставлю это, тем не менее, для тех, кому do нужно сделать это с querySelector
или подобным.
У CSS нет селектора «содержит» (был предложен один,но он остановился и никогда не превращался в стандарт).
Вы можете использовать querySelectorAll
, затем использовать Array#find
, чтобы найти тот, с текстом, который вы хотите:
var list = document.querySelectorAll('.c-partnerSelector__menu__list > li > p > span');
var element = Array.prototype.find.call(list, function(el) {
return el.innerText.includes("SecondElement");
});
Это может выглядеть немного чище в ES2015 + в современном браузере, который делает итерацию NodeList
из querySelectorAll
:
const element = [...document.querySelectorAll('.c-partnerSelector__menu__list > li > p > span')]
.find(el => el.innerText.includes("SecondElement"));
Сказав это: в комментариях к вопросу Андерссон , кажется, имеет хорошее мнение (например, здесь ) об использовании XPath для этого, если это вариант для вас.