lastelementchild 是 dom 元素的一个只读属性,用于获取当前元素的最后一个子元素节点。它会自动跳过文本节点、注释节点等非元素节点,直接返回最后一个 <element></element>。如果该元素没有子元素,则返回 null。

lastElementChild 与 childNodes 的区别是什么
lastElementChild 仅关注元素节点(Node.ELEMENT_NODE),而 childNodes 包含所有类型的子节点,包括文本和注释。使用 lastElementChild 可以避免手动过滤非元素节点,代码更简洁且不易出错。

const container = document.getElementById('container');
// 假设 HTML: <div id="container"><p>Hello</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/c1c2c2ed740f" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">Java免费学习笔记(深入)</a>”;</p><div class="aritcle_card flexRow">
<div class="artcardd flexRow">
<a class="aritcle_card_img" href="/xiazai/skill11083" title="Java调试"><img
src="https://img.php.cn/upload/skill/001/246/273/6adaf20dbae7c507.jpg" alt="Java调试" ></a>
<div class="aritcle_card_info flexColumn">
<a href="/xiazai/skill11083" title="Java调试">Java调试</a>
<p>通过 JDWP 实现 Java 远程调试:连接远程 JVM、设置断点、单步执行代码、查看变量值、获取调用栈。适用于需要调试远程 Java 应用、排查运行时状态、追踪代码执行流程的场景。
术语注解
JDWP:Java Debug Wire Protocol,Java 调试有线协议(Java 远程调试底层通信协议)
remote JVM:远程 Java 虚拟机
step through code:代码单步调试(步入 / 步过 / 步出调试)
inspect variables:变量查看 / 变量检视
stac</p>
</div>
<a href="/xiazai/skill11083" title="Java调试" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
</div>
</div><!-- comment --><span>World</span></div>
console.log(container.childNodes.length); // 4 (p, text, comment, span)
console.log(container.lastElementChild); // <span>World</span>
console.log(container.lastElementChild.tagName); // "SPAN"
// 对比 childNodes
console.log(container.childNodes[container.childNodes.length - 1]); // <span>...</span> (通常也是最后一个,但需确认类型)
console.log(container.lastElementChild === container.children[container.children.length - 1]); // true在上述示例中,container 有四个子节点:一个段落、一个文本节点(换行)、一个注释和一个跨度。lastElementChild 直接指向 <span></span>,而无需遍历或检查节点类型。
当子元素动态变化时 lastElementChild 会如何更新
lastElementChild 是一个实时属性,每次访问时都会重新计算当前最后一个子元素。因此,在添加或删除子元素后,再次访问该属性将反映最新的状态。

const list = document.getElementById('myList');
// 初始状态: <li>A</li>, <li>B</li>
console.log(list.lastElementChild.textContent); // "B"
// 添加新元素
const newItem = document.createElement('li');
newItem.textContent = 'C';
list.appendChild(newItem);
// 再次访问
console.log(list.lastElementChild.textContent); // "C"
// 删除最后一个元素
list.removeChild(list.lastElementChild);
console.log(list.lastElementChild.textContent); // "B" (现在 B 成为最后一个)此代码演示了 lastElementChild 的动态特性。每次调用 appendChild 或 removeChild 后,lastElementChild 的值都会自动更新,无需手动维护索引或缓存引用。

















