gpt4 book ai didi

javascript - 遍历 DOM 从点击的元素获取节点

转载 作者:行者123 更新时间:2023-11-30 17:31:23 26 4
gpt4 key购买 nike

好的,我要做的是以下操作,当我单击页面上的任何元素时,我想构建元素所在的 DOM 树。

html 示例

<html>
<head>
</head>
<body>
<ul>
<li><span>Elem 1</span></li>
<li><span>Elem 2</span></li>
<li><span>Elem 3</span></li>
</ul>
</body>
</html>

这是JS(来自点击事件并通过被点击的元素)

function getElementIdentifier(elem, domSelector, firstId) {
if(elem.tagName === 'HTML') {
return 'HTML ' + domSelector;
} else {
return getElementIdentifier(elem.parentNode, ' > ' +elem.tagName + ' ' + domSelector, firstId);
}
}

这在一定程度上有效,但当我点击列表中的第三项时,它只会检索以下内容:

HTML  > BODY  > UL  > LI  > SPAN

但我想检索第 3 个,因为这是我点击的那个。我有一个代码笔要展示。

http://codepen.io/tom-maton/pen/FljpL/

我不想使用 jQuery - 只想使用原始 js。

最佳答案

这是最快的方法(至少对我而言)

function clickHandler(event) {
var target = event.target,
breadcrumb = [];

while (target) {
breadcrumb.unshift(target.tagName);
target = target.parentElement;
}
console.log(breadcrumb.join(" > "));
}

document.addEventListener('click', clickHandler, false);

在这里 fiddle :http://jsfiddle.net/NTEv2/

sibling 版本:

function getTagName(element) {
return element.tagName;
}
function clickHandler(event) {
var target = event.target,
breadcrumb = [],
temp;

while (target) {
target = target.parentElement;
if (target) {
breadcrumb.unshift(([].slice.call(target.children).map(getTagName).join(" + ")));
}
}

// HTML is always there
breadcrumb.unshift(document.documentElement.tagName);

console.log(breadcrumb.join(" > "));
}

document.addEventListener('click', clickHandler, false);

在这里 fiddle :http://jsfiddle.net/NTEv2/1/

只有以前 sibling 的版本(根据要求):

function clickHandler(event) {
var target = event.target,
breadcrumb = [],
part = [],
prev = target,
temp;

while (target) {
if (prev) {
part.unshift(prev.tagName);
prev = prev.previousElementSibling;
} else {
target = target.parentElement;
prev = target;
breadcrumb.unshift(part.join(" + "));
part = [];
}
}

console.log(breadcrumb.join(" > "));
}

document.addEventListener('click', clickHandler, false);

在这里 fiddle :http://jsfiddle.net/NTEv2/11/

关于javascript - 遍历 DOM 从点击的元素获取节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22998792/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com