我正在利用javascript DOM,起草一份超文本文件。 我想列出所有节点/标志及其价值(实际上是一个阵列)。 我找到了一部用于模拟OM的文字,但我如何在阵列中储存每条 no的价值。 我似乎找不到独一无二的口号。 任何人都有点人? 我想到的是<代码>xpath或一些东西。
考虑将“编码>xpath作为独一无二的识别符号,是否是一个好的想法。 如果是这样,我如何在跨过电离层时获得某一要素的<条码>xpath?
我正在利用javascript DOM,起草一份超文本文件。 我想列出所有节点/标志及其价值(实际上是一个阵列)。 我找到了一部用于模拟OM的文字,但我如何在阵列中储存每条 no的价值。 我似乎找不到独一无二的口号。 任何人都有点人? 我想到的是<代码>xpath或一些东西。
考虑将“编码>xpath作为独一无二的识别符号,是否是一个好的想法。 如果是这样,我如何在跨过电离层时获得某一要素的<条码>xpath?
作为在C和C++世界中诞生和成长的方案者,我对此类问题的第一个回答是“在阵列中储存他们的地址”。 但是,经过几年的问答,我可以回答:
In javascript, you can directly store the references to the objects in the array. And no, xpath is not a good idea for this; using references is simpler and better. So a direct answer to your question is: there is no unique identifier for a DOM element/node except itself.
在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] );
}
你们可以获得类似于Xpath的东西。 它通过母公司Node财产,从投入要素上dom。
https://gist.github.com/sebjace/3c0a6f7493ce23134516/a>
这将产生类似的情况。
“第3/CP.6号决定”
var getElementPath = function(el){
var path = el.nodeName;
var parent = el.parentNode;
while(parent){
path = parent.nodeName + / + path;
parent = parent.parentNode;
}
return path;
}
EDIT: The question seems to point to a simple flatmap solution. I think my original answer was aimed at generating an address for each node in the DOM. This solution almost as basic as flatmap. Well, the DOM is a tree with N children per node. Given a snapshot of the DOM you can generate an address of each element given the child index. As an example of stackoverflow s DOM, grabbing the one of the nodes 5 levels deep - the address is 01001. Each address will be unique for every element in the DOM. This won t work if you need a static address for a dynamic web app however.