在纯JavaScript中选择不带任何数据属性的元素
我有一个列表,我想选择没有任何数据属性的第一个列表元素“li”在纯JavaScript中选择不带任何数据属性的元素,javascript,Javascript,我有一个列表,我想选择没有任何数据属性的第一个列表元素“li” <ul> <li data-row="down"><a class="scroll" href="#home">home</a></li> <li data-space="down"><a class="scroll" href="#home">home</a></li> <li data-dir
<ul>
<li data-row="down"><a class="scroll" href="#home">home</a></li>
<li data-space="down"><a class="scroll" href="#home">home</a></li>
<li data-direction="down"><a class="scroll" href="#about">about</a></li>
<li><a class="scroll" href="#team">team</a></li>
<li><a class="scroll" href="#service">service</a></li>
<li><a class="scroll" href="#portfolio">portfolio</a></li>
<li data-direction="down"><a class="scroll" href="#blog">blog</a></li>
</ul>
但我需要更普遍的东西
document.querySelector('li:not([data-*])');
这不起作用您需要的不仅仅是选择器,例如筛选。但明智、高效和干净的解决方案是向您想要选择的元素添加一个类。为什么不给第一个li标记一个唯一的ID
ID=“first”
,然后让选择器成为document。querySelector(“#first”)
可能的重复我认为单独使用querySelector
是不可能的。您检查过了吗?可能重复的不使用!!…。过滤器(…)。长度
。使用。每一个或。一些。
const getAllElements = selector => Array.from(document.querySelectorAll(selector)
const isDataAttribute = attr => attr.startsWith('data-')
const hasDataAttribute = el =>
Array.from(el.attributes)
.every(isDataAttribute)
getAllElements('li')
.filter(hasDataAttribute)
const getAllElements = selector => Array.from(document.querySelectorAll(selector)
const isDataAttribute = attr => attr.startsWith('data-')
const hasDataAttribute = el =>
Array.from(el.attributes)
.every(isDataAttribute)
getAllElements('li')
.filter(hasDataAttribute)