首页 > 解决方案 > 如何使用starts-with()函数从节点获取标签名称?

问题描述

如何从节点获取标签名称?

<h2 data-my-color="#333"></h2>
<div data-my-color="#222"></div>
<div data-my-color="#111"></div>

所以我想得到'h2','div','div'。

var nodeMy = document.evaluate('//@*[starts-with(name(), "data-my-")]', document, null, XPathResult.ANY_TYPE, null);

var thisnodeMy = nodeMy.iterateNext();

while (thisnodeMy) {

    console.log(thisnodeMy);

    console.log(thisnodeMy.ownerElement.localName);/* Works... the good way?! */

    thisnodeMy = nodeMy.iterateNext(); 

}

提前致谢。

标签: javascriptxpath

解决方案


很好,但可以像这样简化一点:

var result = document.evaluate('//*[starts-with(name(@*), "data-my-")]', document, null, XPathResult.ANY_TYPE, null);

var node = null;
var tagNames = [];
while(node = result.iterateNext()) {
  tagNames.push(node.nodeName);
}
console.log(tagNames.join(", "));
<h2 data-my-color="#333"></h2>
<div data-my-color="#222"></div>
<div data-my-color="#111"></div>


推荐阅读