在这段代码中,我得到了所有li元素的子代数。 但是我如何才能得到一个孩子以上的李元素呢?
let liLength = document.querySelectorAll('li').length;
for (let i = 0; i < liLength; i++) {
let liChildrenLength = document.querySelectorAll('li')[i].children.length;
console.log(liChildrenLength);
}
<body>
<ul>
<li><a>list</a></li>
<li><a>list</a>
<ul>
<li><a>list</a></li>
<li><a>list</a></li>
</ul>
</li>
<li><a>list</a>
<ul>
<li><a>list</a></li>
<li><a>list</a></li>
</ul>
</li>
</ul>
<script src="main.js"></script>
</body>
答案 0 :(得分:2)
将NodeList
转换为Array
并使用filter
和childNodes
。
取决于您是否希望实际元素数与节点数大于1,应将childNodes
换为children
。 childNodes
将包含 any 节点,而children
仅包含Elements
。有关更多详细信息,请参见此问题:What is the difference between children and childNodes in JavaScript?
const arr = Array.from(document.querySelectorAll('li')).filter(li => li.childNodes.length > 1);
console.log(arr);
<body>
<ul>
<li><a>list</a></li>
<li><a>list</a>
<ul>
<li><a>list</a></li>
<li><a>list</a></li>
</ul>
</li>
<li><a>list</a>
<ul>
<li><a>list</a></li>
<li><a>list</a></li>
</ul>
</li>
</ul>
</body>
答案 1 :(得分:1)
1-将所有<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Hello Vue</title>
<meta name="" content="">
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<script src="js/main.js"></script>
<div id="app" class="container">
<login-page></login-page>
</div>
</body>
</html>
而不是长度存储在数组中
2-遍历它们并检查子代数
类似这样的东西
li
let lis = document.querySelectorAll('li');
for (let i = 0; i < lis.length; i++) {
if (lis[i].children.length > 1) {
console.log(lis[i].children)
console.log('------------------')
}
}
答案 2 :(得分:0)
var liLength = document.querySelectorAll('li').length;
for (var i = 0; i < liLength; i++) {
var liChildren = document.querySelectorAll('li')[i].children;
if (liChildren.length > 1)
for (var j = 0; j < liChildren.length; j++)
console.log(liChildren[j]);
}
<body>
<ul>
<li><a>list</a></li>
<li><a>list</a>
<ul>
<li><a>list</a></li>
<li><a>list</a></li>
</ul>
</li>
<li><a>list</a>
<ul>
<li><a>list</a></li>
<li><a>list</a></li>
</ul>
</li>
</ul>
<script src="main.js"></script>
</body>
与通过数组进行解析一样,使用[indexNumber]
liChildren = document.querySelectorAll('li')[i].children;
liChildren[someIndex]
希望是问题
答案 3 :(得分:0)
尝试一下:
let li = [...document.querySelectorAll('li')].filter(function(li) {
return li.children.length;
});