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

Javascript DOM元素/节点的唯一标识符是什么,javascript,dom,Javascript,Dom,我正在使用javascript DOM遍历一个HTML文档。我想列出所有节点/元素及其值(实际上是一个数组)。我找到了一个用于遍历DOM的脚本,但如何将每个节点值存储在数组中。我似乎找不到节点的唯一标识符。有人有什么建议吗?我在想xpath或者别的什么 < >将节点的 xPath < /> >作为唯一标识符是一个好主意。如果这样,当我遍历DOM?< P>元素时,如何得到一个元素的?XPath >作为一个程序员,在C和C++的世界中诞生和长大,我对这类问题的第一个答案就是“在数组中存储地址”。但

我正在使用javascript DOM遍历一个HTML文档。我想列出所有节点/元素及其值(实际上是一个数组)。我找到了一个用于遍历DOM的脚本,但如何将每个节点值存储在数组中。我似乎找不到节点的唯一标识符。有人有什么建议吗?我在想xpath或者别的什么


< >将节点的<代码> xPath < /> >作为唯一标识符是一个好主意。如果这样,当我遍历DOM?

< P>元素时,如何得到一个元素的<代码>?XPath <代码> >作为一个程序员,在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] );
}
var theArray=[];
var theNodeToTraverse=document.getElementById('domelementtosearch');
traverseAndStore(无需Traverse);
函数traverseAndStore(节点)
{
if(node==null)返回;
theArray[theArray.length]=节点;

对于(i=0;i您可以获得类似于xpath的东西,如下所示

它将输出这样的字符串

“#document/HTML/BODY/DIV”


您是否考虑过所有元素和值的列表就是DOM?在数组中包含元素后,您的计划是什么?如果要遍历数组,只需遍历DOM就更容易了。此代码只需遍历
theNodeToTraverse
的所有子元素,并将对子DOM元素的引用存储在
中ray
。这样的引用可以用作唯一ID吗?例如,我可以将其存储在某个地方并在另一个javascript脚本中重复使用以访问同一个节点吗?如果不是(我怀疑),那么您如何“记住”脚本之间的节点?记住脚本之间的节点?如果它们只是不同的脚本(读取不同的js文件)加载到同一页上,如果您希望传递引用(使用方法调用或共享空间),您完全可以这样做。您不能做的是将引用以某种方式传递到数据库中,然后稍后将其传递回该页,希望它可用。@jrharshas这正是我想要做的,有什么想法吗?我现在有:)可悲的是,我不是以这样做为生的。就唯一id而言,如果有两个DIV是BODY元素的子元素,这将失败,因为这两个DIV都具有相同的输出字符串。这将使此id的唯一性无效。
var getElementPath = function(el){
  var path = el.nodeName;
  var parent = el.parentNode;
  while(parent){
    path = parent.nodeName + '/' + path;
    parent = parent.parentNode;
  }
  return path;
}