JavaScript-选择[data some]属性没有特定值的所有元素

JavaScript-选择[data some]属性没有特定值的所有元素,javascript,custom-data-attribute,Javascript,Custom Data Attribute,我的项目使用纯JavaScript。我想选择没有数据属性值的元素作为'abcd'。 我尝试了以下方法 :not([data-some="abcd"]) 此选择器仅返回不具有[某些数据]的元素。但我只想选择不具有某些数据属性的元素作为“abcd”。它可以有[data some=gtf] 非常感谢您的帮助 注意:我只粘贴了选择器,因为我只需要它们。大多数stackoverflow问题都有选择没有特定数据属性的元素的答案 获取所有具有属性数据的元素,其中有些元素的值为abcd 获取具有属性数据的所

我的项目使用纯JavaScript。我想选择没有数据属性值的元素作为'abcd'。 我尝试了以下方法

 :not([data-some="abcd"])
此选择器仅返回不具有[某些数据]的元素。但我只想选择不具有某些数据属性的元素作为“abcd”。它可以有[data some=gtf]

非常感谢您的帮助


注意:我只粘贴了选择器,因为我只需要它们。大多数stackoverflow问题都有选择没有特定数据属性的元素的答案

获取所有具有属性数据的元素,其中有些元素的值为abcd


获取具有属性数据的所有元素,但值为abcd的元素除外


如果可以使用Array.prototype.filter,则此解决方案是可行的:

const elements=document.querySelectorAll[data some]; const result=Array.fromelements.filterel=>el.dataset.some!==abcd; console.logresult;
如果可以使用Array.prototype.filter,则此解决方案是可行的:

const elements=document.querySelectorAll[data some]; const result=Array.fromelements.filterel=>el.dataset.some!==abcd; console.logresult; var test=document.querySelectorAll':不是[data some=abcd]; 如果test.hasOwnPropertyi为测试中的var i{ 测试[i].style.background=dcdc; } p、 h1{ 背景:ff7f7f; } 你好 你好

您好

var test=document.querySelectorAll':不是[data some=abcd]; 如果test.hasOwnPropertyi为测试中的var i{ 测试[i].style.background=dcdc; } p、 h1{ 背景:ff7f7f; } 你好 你好

您好


您可以使用单个选择器(尽管相当复杂):

[data-some]:not([data-some="abcd"])
注意兼容性,根据需要支持的主机,您可能需要一个更简单的选择器和一些脚本

例如

[数据部分]:不是[数据部分=abcd]{ 背景色:FF66; }

数据some=abcd

data some=zzz

data some=


无数据某些属性

您可以使用单个选择器(尽管相当复杂):

[data-some]:not([data-some="abcd"])
注意兼容性,根据需要支持的主机,您可能需要一个更简单的选择器和一些脚本

例如

[数据部分]:不是[数据部分=abcd]{ 背景色:FF66; }

数据some=abcd

data some=zzz

data some=


没有data some属性

所以您希望这些元素的子集具有data some属性,但没有值abcd?它必须是选择器,还是可以是选择器和Array.prototype.filter的组合?那么您需要的是[data some]:而不是[data some=abcd]。我只需要选择器。。并且不使用Array.prototype.filter。@RobG请给出您的评论作为答案。[data some]:not[data some=abcd]是我所期望的。那么您想要这些元素中具有data some属性但不具有值abcd的子集吗?它必须是选择器,还是可以是选择器和Array.prototype.filter的组合?那么您需要的是[data some]:而不是[data some=abcd]。我只需要选择器。。并且不使用Array.prototype.filter。@RobG请给出您的评论作为答案。[data some]:not[data some=abcd]是我所期望的。not选择器也需要外引号。not选择器也需要外引号。不幸的是,for..in循环中的if测试没有任何用处。test本身的可枚举属性是一个节点列表,它是元素0、1、2等的索引,因此它只是在元素上执行forEach循环的一种复杂方式。它不排除没有data some属性的元素,因此提供与样式规则相同的结果:而不是OP不想要的[data some=abcd]{background color:DCDC}。不幸的是,for..in循环中的if测试没有任何用处。test本身的可枚举属性是一个节点列表,它是元素0、1、2等的索引,因此它只是在元素上执行forEach循环的一种复杂方式。它不排除没有data some属性的元素,因此提供与样式规则相同的结果:而不是OP不想要的[data some=abcd]{background color:dcdc}。