如何打开所有jstree节点(父子节点)
How to open all jstree nodes (parents and children)
有一个webpage有129个父节点。
并且每个父节点都有多个子节点到第四级(目>科>属>种)。
我想打开所有个节点。
我在这里看到了一些带有脚本的帖子。
但是我不知道怎么用。
注意:我的实际目的是复制所有数据及其嵌套格式。
P.s。我不是网络开发人员,那不是我的网站。
以下代码将递归展开所有链接,然后使用树表示从中创建一个 JSON,然后将 JSON 复制到剪贴板。
我为每棵树设置了 2 秒的超时时间以展开,以便子树在网络请求后出现,因此需要 2 秒 * 该页面中所有可用的树,因此您将不得不等待它需要很长时间才能完成,如果你有一个快速连接,你可以将超时减少到 1 秒以使其更快。
function extractChilds(ulNode) {
return [...ulNode.childNodes].map(node => {
let data = {
title: node.querySelector('a')?.innerText?.trim()
}
let child = node.querySelector('ul');
if(child) {
data.childrens = extractChilds(child);
}
return data;
});
}
async function main() {
let done = false;
while(!done) {
for(const e of [...document.querySelectorAll('.jstree-closed')]) {
await new Promise(r => setTimeout(r, 2000))
e.querySelector('ins').click()
}
if(document.querySelectorAll('.jstree-closed').length === 0) done = true;
}
console.log('expanded all of the trees')
return extractChilds(document.querySelector("#classification > ul"));
}
main().then(copy);
有一个webpage有129个父节点。
并且每个父节点都有多个子节点到第四级(目>科>属>种)。
我想打开所有个节点。
我在这里看到了一些带有脚本的帖子。
但是我不知道怎么用。
注意:我的实际目的是复制所有数据及其嵌套格式。
P.s。我不是网络开发人员,那不是我的网站。
以下代码将递归展开所有链接,然后使用树表示从中创建一个 JSON,然后将 JSON 复制到剪贴板。
我为每棵树设置了 2 秒的超时时间以展开,以便子树在网络请求后出现,因此需要 2 秒 * 该页面中所有可用的树,因此您将不得不等待它需要很长时间才能完成,如果你有一个快速连接,你可以将超时减少到 1 秒以使其更快。
function extractChilds(ulNode) {
return [...ulNode.childNodes].map(node => {
let data = {
title: node.querySelector('a')?.innerText?.trim()
}
let child = node.querySelector('ul');
if(child) {
data.childrens = extractChilds(child);
}
return data;
});
}
async function main() {
let done = false;
while(!done) {
for(const e of [...document.querySelectorAll('.jstree-closed')]) {
await new Promise(r => setTimeout(r, 2000))
e.querySelector('ins').click()
}
if(document.querySelectorAll('.jstree-closed').length === 0) done = true;
}
console.log('expanded all of the trees')
return extractChilds(document.querySelector("#classification > ul"));
}
main().then(copy);