ZetCode

JavaScript element.children

最后修改于 2025 年 4 月 2 日

在本文中,我们将探讨 JavaScript 中的 element.children 属性。此属性可访问元素的子元素,但不包括文本节点和注释。它对于 DOM 遍历至关重要。

基本定义

element.children 属性返回给定元素的子元素的实时 HTMLCollection。它只包含元素节点,不包含文本节点或注释节点。

childNodes 不同,children 更具针对性,因为它只返回元素节点。这使其成为涉及元素遍历的大多数 DOM 操作任务的理想选择。

访问子元素

此示例演示了如何访问父元素的子元素。

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Accessing Children</title>
</head>
<body>

<div id="parent">
    <p>First paragraph</p>
    <p>Second paragraph</p>
    <div>Nested div</div>
</div>

<script>
    const parent = document.getElementById('parent');
    const children = parent.children;
    
    console.log(children.length); // 3
    console.log(children[0].textContent); // "First paragraph"
</script>

</body>
</html>

在此示例中,我们访问 ID 为“parent”的 div 元素的子元素。children 属性返回三个子元素的 HTMLCollection。

然后,我们可以通过索引访问单个子元素并处理它们的属性。该集合是实时的,这意味着它会在 DOM 更改时自动更新。

遍历子元素

此示例展示了如何循环遍历父元素的所有子元素。

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Iterating Children</title>
</head>
<body>

<ul id="list">
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
</ul>

<script>
    const list = document.getElementById('list');
    
    for (let i = 0; i < list.children.length; i++) {
        list.children[i].style.color = 'blue';
    }
</script>

</body>
</html>

这里我们有一个包含三个项目的无序列表。JavaScript 代码使用 children 访问所有列表项并更改它们的文本颜色。

这演示了如何使用标准的 for 循环遍历子元素。我们可以在迭代期间对每个子元素执行操作。

检查子元素

此示例演示了如何检查元素是否具有任何子元素。

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Checking Children</title>
</head>
<body>

<div id="container">
    <span>Child element</span>
</div>
<div id="empty"></div>

<script>
    const container = document.getElementById('container');
    const emptyDiv = document.getElementById('empty');
    
    console.log(container.children.length > 0); // true
    console.log(emptyDiv.children.length > 0); // false
</script>

</body>
</html>

在此示例中,我们检查两个 div 元素是否包含任何子元素。children.length 属性告诉我们存在多少子元素。

此技术对于基于元素内容的条件逻辑很有用。请记住,children 只计算元素节点,不计算文本节点。

将子元素转换为数组

此示例展示了如何将子元素的 HTMLCollection 转换为数组。

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Children to Array</title>
</head>
<body>

<div id="gallery">
    <img src="image1.jpg">
    <img src="image2.jpg">
    <img src="image3.jpg">
</div>

<script>
    const gallery = document.getElementById('gallery');
    const childrenArray = Array.from(gallery.children);
    
    childrenArray.forEach(img => {
        console.log(img.src);
    });
</script>

</body>
</html>

在这里,我们使用 Array.from() 将图库 div 的子元素转换为一个真正的数组。这使我们能够使用 forEach 等数组方法。

当您需要 HTMLCollection 上不可用的数组方法时,转换为数组会很有帮助。它还创建了元素的静态快照。

过滤子元素

此示例演示了如何根据条件过滤子元素。

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Filtering Children</title>
</head>
<body>

<div id="content">
    <p class="important">Important note</p>
    <p>Regular text</p>
    <p class="important">Another important note</p>
</div>

<script>
    const content = document.getElementById('content');
    const importantNotes = Array.from(content.children)
        .filter(child => child.classList.contains('important'));
    
    importantNotes.forEach(note => {
        note.style.fontWeight = 'bold';
    });
</script>

</body>
</html>

在此示例中,我们过滤子元素以仅选择具有“important”类的元素。然后,我们仅将样式应用于这些过滤后的元素。

这展示了将 children 与数组方法结合使用进行选择性 DOM 操作的强大功能。filter 操作创建一个包含匹配元素的新数组。

来源

MDN element.children 文档

在本文中,我们探讨了 JavaScript 中的 element.children 属性。此属性对于 DOM 遍历和操作至关重要,可访问元素的子元素。

作者

我叫 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出 所有 JS DOM 教程