我正在使用javascript DOM遍历HTML文档。我想制作一个所有节点/元素及其值的列表(实际上是一个数组)。我找到了一个遍历DOM的脚本,但是如何将每个节点值存储在一个数组中。我似乎无法找到节点的唯一标识符。任何人有任何指针?我在考虑xpath
或其他什么。
将节点xpath
视为唯一标识符是一个好主意。如果是这样,我如何在遍历DOM时获取元素的xpath
?
答案 0 :(得分:20)
作为程序员在C和C ++世界中出生并长大,我对这类问题的第一个答案就是“将他们的地址存储在数组中!”。但经过几年的网络方式,我可以给出正确的答案:
在javascript中,您可以直接将引用存储到数组中的对象。 不,xpath不是一个好主意;使用引用更简单,更好。 所以直接回答你的问题是:除了本身之外,没有DOM元素/节点的唯一标识符。
在javascript中,所有对象都通过引用传递。所以这是一个如何做的示例代码:
var theArray = [];
var theNodeToTraverse = document.getElementById('domelementtosearch');
traverseAndStore(theNodeToTraverse);
function traverseAndStore( node )
{
if( node==null) return;
theArray[ theArray.length ] = node;
for( i=0; i<node.childNodes.length; i++ )
traverseAndStore( node.childNodes[i] );
}
答案 1 :(得分:0)
你可以得到类似于xpath的东西。它从输入元素向上遍历dom到parentNode属性。
https://gist.github.com/sebjwallace/3c0a6f7493ce23134516
它将输出这样的字符串。
“#文件/ HTML / BODY / DIV”
var getElementPath = function(el){
var path = el.nodeName;
var parent = el.parentNode;
while(parent){
path = parent.nodeName + '/' + path;
parent = parent.parentNode;
}
return path;
}