Я пытаюсь получить элемент с атрибутом title="some title"
, но есть несколько элементов, которые возвращаются, и я должен получить первый элемент, у которого нет атрибута стиля.
Я попытался добавить :not[style]
к своему выбору в качестве дополнительного аргумента, но это не сработало.
document.querySelector(':not([style])', 'not[title="Add to Bag"]');
Элемент, который я ищу, должен быть:
<button type="submit" class="pdp-add-to-bag add-to-cart pid-19GRB-004f78165ba0cb247a9d38d110" title="Add to Bag">Add to Bag</button>
0
N. Amin
27 Окт 2019 в 23:24
1 ответ
Лучший ответ
Объедините два селектора - '[title="Add to Bag"]:not([style])'
:
const els = document.querySelectorAll('[title="Add to Bag"]:not([style])');
console.log('Number of buttons found: ', els.length);
console.log(els[0]);
<button type="submit" class="pdp-add-to-bag add-to-cart pid-19GRB-004f78165ba0cb247a9d38d110" title="Add to Bag">Add to Bag</button>
<button type="submit" class="pdp-add-to-bag add-to-cart pid-19GRB-004f78165ba0cb247a9d38d110" title="Add to Bag" style="color: red;">Add to Bag</button>
4
Ori Drori
27 Окт 2019 в 23:28
Интересно, не лучше ли с точки зрения производительности использовать здесь два поиска querySelector - первый только для заголовка, второй для :not (style). Но это в любом случае не должно беспокоить. )
– raina77ow
27 Окт 2019 в 23:30
1
Я использую querySelectorAll, чтобы продемонстрировать, что он находит первую кнопку, но игнорирует вторую из-за стиля. Он должен использовать
– querySelector
, чтобы найти один предмет.
Ori Drori
27 Окт 2019 в 23:32
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Обратите внимание, что JavaScript — это НЕ Java. Включите все теги, относящиеся к вашему вопросу: например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [стройный] и т. д.
not[title...]
, когда на самом деле ищете элемент с таким заголовком?:not[style][title="Add to Bag"]
. Хотя я повторяю вопрос @raina77ow.