我需要根據DOM中的級別生成元素值。例如如果我在文檔級別有一個點擊事件(即監聽頁面上的任何點擊)和呈現的HTML,它需要遍歷DOM直到您看到「ID」屬性填充。根據DOM中的位置動態生成ID
<div id="someid">
<div>
<span>
<p>
<a href="javascript:void(0);">
<span>
<strong>Googlie</strong>
</span>
</a>
</p>
</span>
</div>
當我點擊「Googlie」,它應產生是這樣的: someid__div_span_p_a_span_strong
問題: 我確實有一些代碼來做到這一點,但有一個問題,它。在上面,如果我有兩個元素,接下來如下所示。如何爲強元素生成唯一值?我可以擁有一些不使用childNodes位置的東西嗎?如果有人更改元素之間的空白區域,則childNodes值會更改。
...<span>
<strong>Googlie</strong> <br/> <strong>Bingie</strong>
...
document.onclick = function(obj) {
var node = obj.target;
var res = [];
var etA = "";
res[0] = false;
while (!res[0]) {
res = GetIdFor(node);
if (!res[0]) {
var end = node.parentNode.childNodes.length;
for (var i = 0; i < end; i++) {
var j = node.parentNode.childNodes[i];
if (j.nodeType === 1 && j === node) {
break;
}
}
etA = "_" + node.tagName + etA;
node = node.parentNode;
}
else {
etA = res[1] + "_" + etA;
}
}
alert(etA);
};
function GetIdFor(elem) {
var res = [];
res[0] = false;
var d = elem.getAttribute("ID");
if (d !== "undefined" && d !== null) {
res[0] = true;
res[1] = d;
}
return res;
}
現在,我知道jQuery的可以幫助這裏不過這不是重點。 :)想法?我沒有其他選擇,只能使用childNodes級別來生成此值嗎?
你想用這個ID實現什麼? – Oriol
看看這裏:http://stackoverflow.com/questions/5728558/jquery-get-the-dom-path-of-the-clicked-a –
@Oriol。這個想法是獲得該ID,並能夠反向工程,並在某種報告中再次找到,以顯示點擊的位置。謝謝! –