簡體   English   中英

如何獲得一個孩子以上的孩子?

[英]How to get element who has more than one child?

在這段代碼中,我得到了所有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> 

NodeList轉換為Array並使用filterchildNodes

根據您是否希望實際元素與節點的數量大於1,應將childNodes換為children childNodes將包含任何節點,而children節點僅包含Elements 有關更多細節,請參見此問題:JavaScript中的child和childNodes有什么區別?

 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-將所有li而不是長度存儲在數組中

2-遍歷他們並檢查孩子的數量

像這樣

 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('------------------') } } 
 <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> 

 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]

希望這是問題

嘗試這個:

let li = [...document.querySelectorAll('li')].filter(function(li) {
   return li.children.length;
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM