3

我希望能够data-type使用纯 javascript 检索 ,这是一个新的 HTML5 标记名称(或任何自定义标记名称)。我需要访问此数据的上下文来自元素 childNodes 的循环。

var children = document.getElementById('foo').childNodes;
for(var i=0; i<children.length; i++) {
    var dataType = children[i].dataType //This does not work.
}

是否有某种方法可以制作原型childNodes,以便使用该标签检索到的任何元素都将dataType附加一个函数,以便上述代码实际上可以工作?

我想我将不得不使用children[i].outerHTML来获取元素的原始 HTML,然后使用正则表达式来实际放置元素中的值。

4

2 回答 2

8

如果您的意思是从data-*属性中获取数据

var children = document.getElementById('foo').childNodes;
var childrenLength = children.length;

for(var i=0; i<childrenLength; i++) {
    var dataType = children[i].getAttribute('data-type');
}
于 2012-04-04T06:13:07.810 回答
1

如果您查看Mozilla关于该主题的文档,您会发现该标准定义了一种比 DOMStringMap 更简单的方法.getAttribute可以使用数据集属性读取。

简而言之,这意味着你可以做到这一点

var dataType = children[i].dataset.dataType;

或者您可以将 设置dataset为如下所示的变量,这在您从元素中获取多个数据属性时非常方便

var dataSet = children[i].dataset,
    dataType = dataSet.dataType;
于 2014-07-05T18:19:45.907 回答