Javascript JS hasAttribute具有数据属性值

Javascript JS hasAttribute具有数据属性值,javascript,jquery,Javascript,Jquery,是否有一种本机方法(不使用jQuery)来检查dom元素是否具有具有所选值的属性。例如: //assume doc has data-mod="do" defined 这是事实: document.hasAttribute('data-mod') 但这是错误的: document.hasAttribute('data-mod=“do”') 是否有任何方法可以在具有值的DOM元素上以本机方式检查数据属性?是的,如下所示: var selector = document.getElementsBy

是否有一种本机方法(不使用jQuery)来检查dom元素是否具有具有所选值的属性。例如:

//assume doc has
data-mod="do" defined
这是事实:

document.hasAttribute('data-mod')

但这是错误的:

document.hasAttribute('data-mod=“do”')

是否有任何方法可以在具有值的DOM元素上以本机方式检查数据属性?

是的,如下所示:

var selector = document.getElementsByTagName("H1")[0]; //Exemple of a h1
if (selector.getAttribute('data-mod') == "do"){
      //Do your logic
}

您必须通过访问属性值,并将其与预期字符串进行比较:

if (node.getAttribute('data-mod') === 'do') {
    ...
}
对于现代浏览器,您可以使用:

…或对于
[data-*]
属性,您可以使用:


你可以用

通过使用
数据集
您可以轻松访问元素的数据属性。

这可能有效

var list = document.querySelectorAll('[data-mod="do"]');
你可以用

功能数据(el、数据名、数据值){
对于(变量i=0;i
abc
123

没有数据
文档
没有属性。您是指文档中的某个元素,还是某个特定元素有属性?请澄清您的问题。“是否有原生方式,没有JQuery,”为什么在问题处有
JQuery
标记?
TypeError:document.getAttribute不是函数
抱歉,文档没有属性,你必须选择一个有效的选择器,否则我会更清楚的。我不知道函数中的数据属性或值是什么,因为它可以change@TDmoneybanks因此,在执行过程中,您将只有这个
'data-mod=“do”
?该函数将接受一个选择器参数。它的内容可以是任何有效的选择器,包括任何数据-*=”“我需要能够看到元素是否具有该选择器。@TDmoneybanks您可以使用
元素。匹配(选择器)
,正如ZZBOV为您的案例所建议的那样。但在使用它时要小心,因为它只受最新浏览器的支持。是的,我注意到这将最符合我的用例。你知道对ie 10+有什么样的支持吗?我看到他们只是在不同的名称下定义它们,所以如果我检查了所有可能的名称(mozMatchesSelector、webkitMatchesSelector等),我会不会很好地支持它们?匹配适用于我的用例。支持旧浏览器的含义/方式是什么?如果我记得有人用不同的名称定义了它,比如msMatchesSelctor(),对吗?要获得最新的兼容性信息,我建议您进行咨询,这表明您需要使用
msMatchesSelector
作为获得IE9+支持的后备方法。
if (node.dataset.mod === 'do') {
    ...
}
if (elementNode.dataset['mod'] == 'do') {
    //your code goes here.
}
var list = document.querySelectorAll('[data-mod="do"]');