在现代前端开发中,有时我们需要在内联 <script> 标签中直接操作 DOM 元素。例如,在一个组件化结构中,我们希望基于当前脚本的位置来获取其相邻的 DOM 元素,而无需依赖 id、class 或全局选择器。
本文将介绍如何使用 document.currentScript 属性快速获取当前正在执行的 <script> 标签,并结合 previousElementSibling 和 nextElementSibling 获取其前一个或后一个兄弟元素。
什么是 document.currentScript?
document.currentScript 是一个只读属性,它返回当前正在执行的 <script> 元素。这个属性非常适合用于定位当前脚本所在的位置,从而进行后续的 DOM 操作。
const currentScript = document.currentScript;
console.log(currentScript); // 输出当前 <script> 元素
- ✅ 优点:简洁、高效,不需要额外标记。
- 🧩 适用场景:内联脚本、模块化组件、动态插入脚本等需要定位自身位置的情况。
获取当前脚本的上一个兄弟元素
我们可以结合 currentScript.previousElementSibling 来获取当前 <script> 标签的前一个兄弟元素节点(忽略文本节点和注释):
const currentScript = document.currentScript;
const previousElement = currentScript.previousElementSibling;
if (previousElement) {
console.log('上一个兄弟元素:', previousElement);
}
示例 HTML 结构:
<div class="content">我是上一个元素</div>
<script>
const currentScript = document.currentScript;
const previousElement = currentScript.previousElementSibling;
console.log(previousElement); // 输出 div.content
</script>
获取当前脚本的下一个兄弟元素
同理,也可以使用 nextElementSibling 获取当前 <script> 的下一个兄弟元素节点:
const nextElement = currentScript.nextElementSibling;
if (nextElement) {
console.log('下一个兄弟元素:', nextElement);
}
示例 HTML 结构:
<script>
const currentScript = document.currentScript;
const nextElement = currentScript.nextElementSibling;
console.log(nextElement); // 输出 span.description
</script>
<span class="description">我是下一个元素</span>
实际应用示例:为相邻元素添加样式
你可以利用这些方法实现一些实用功能,比如为当前脚本的上一个元素添加背景色:
const currentScript = document.currentScript;
const previousElement = currentScript.previousElementSibling;
if (previousElement) {
previousElement.style.backgroundColor = '#f0f0f0';
}
这在构建文档展示页面、组件说明块、自包含模块时非常有用。
总结
| 目标 | 方法 |
|---|---|
| 获取当前脚本 | document.currentScript |
| 获取上一个兄弟元素 | currentScript.previousElementSibling |
| 获取下一个兄弟元素 | currentScript.nextElementSibling |
通过 document.currentScript,我们可以轻松地从当前脚本出发访问其周围的 DOM 元素,实现更灵活、更模块化的网页逻辑。这种方法干净、直观,是现代 JavaScript 开发中值得掌握的小技巧。
如果你经常编写组件化脚本或者需要在特定上下文中操作 DOM,不妨试试这个组合拳:currentScript + sibling,让你的代码更加优雅和可维护!

被折叠的 条评论
为什么被折叠?



