DOM元素/节点的唯一标识符是什么

时间:2009-05-19 09:22:11

标签: javascript dom

我正在使用javascript DOM遍历HTML文档。我想制作一个所有节点/元素及其值的列表(实际上是一个数组)。我找到了一个遍历DOM的脚本,但是如何将每个节点值存储在一个数组中。我似乎无法找到节点的唯一标识符。任何人有任何指针?我在考虑xpath或其他什么。

将节点xpath视为唯一标识符是一个好主意。如果是这样,我如何在遍历DOM时获取元素的xpath

2 个答案:

答案 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;
}