如何在 JavaScript 中获取父元素2025 年 3 月 18 日 | 6 分钟阅读 JavaScript 是一种强大的脚本语言,使程序员能够创建动态、交互式的网站。在处理文档对象模型 (DOM) 时,查找特定元素的父元素是一项常见操作。 在这里,我们将探讨各种基于 JavaScript 的方法来实现这一点。 查找 HTML 元素父元素最简单的方法是使用 parentNode 属性。当提供一个元素时,此属性返回该元素在 DOM 树中的父节点。以下示例说明了如何使用此属性: 上述代码片段中,首先使用 getElementById 方法通过 ID 选择子元素。之后,我们使用 parentNode 属性将父元素赋值给 parentElement 变量。 使用 parentElement 属性: DOM 提供了一个有用的 parentElement 属性,除了 parentNode 属性之外,它还可以用来获取 HTML 元素的父元素。其应用与前面的技术非常相似: 通过一种更具说明性和可理解性的方法,我们可以通过使用 parentElement 属性实现相同的结果。 使用 closest() 方法: closest() 方法是现代浏览器提供的另一个有效工具。 通过使用此技术,您可以确定 CSS 选择器树中哪个元素是元素的直接祖先。以下示例演示了 nearest() 技术的使用: 在上述代码中,在使用 getElementById 方法选择子元素之后,调用 nearest() 函数,并提供 CSS 选择器作为参数。closest() 函数返回匹配指定选择的元素的第一个祖先。 在这种情况下,我们试图找到的是具有“parent-class”类的元素,它是子元素最近的祖先。 使用遍历方法: JavaScript 提供了许多遍历方法,您可以使用它们来遍历 DOM 树。其中包括 parentNode、previousSibling、nextSibling、firstChild 和 lastChild 方法。您可以结合使用这些技术来转到特定元素的父元素。例如,请考虑以下内容: 在这行代码中,我们首先使用 getElementById 选择子元素,然后使用 parentNode 属性获取其父元素。这些遍历技术使您可以在 DOM 树中上下导航以找到所需的父元素或子元素。 将 parentElement 属性用于事件处理: 在使用 JavaScript 事件处理程序时,可能需要访问事件目标的父元素。例如,如果您有一系列按钮,并且希望在单击父元素上的按钮时执行某些操作,则可以使用事件处理程序中的 parentElement 属性。 这是一个示例: 在上面的代码示例中,我们使用 querySelectorAll 选择所有具有“button”类的组件。然后,每个按钮都使用 forEach 函数附加一个点击事件监听器。 我们在事件处理程序内部使用 event.target.parentElement 来访问父元素。因此,当单击按钮时,我们能够对父元素执行操作。 使用动态元素的父元素属性 如果您在 Web 应用程序中使用动态生成的元素,您可能会遇到需要访问新创建元素的父元素的情况。 在将元素添加到 DOM 之后,您可以在某些情况下使用 parentElement 属性。 例如,请考虑以下内容: 在这行代码中,我们首先使用 getElementById 选择父元素。然后,在 createNewElement 函数内部使用 appendChild 函数,我们创建一个新元素,根据需要修改它,并将其添加到父元素中。 使用 parentElement 属性,我们可以在将新元素添加到 DOM 之后获取其父元素。 使用 offsetParent 属性 在某些情况下,您可能希望找到特定元素的最近定位祖先元素。您可以使用 offsetParent 属性来实现此目的。它返回具有非静态位置(默认位置)的最近祖先元素。 这是一个示例 在前面提到的代码片段中,我们首先使用 getElementById 方法选择子元素,然后使用 offsetParent 属性将最近的定位祖先元素指定给名为 positionedAncestor 的变量。 将 parentNode 属性与不同节点类型一起使用 除了获取 HTML 元素的父元素之外,您还可以遍历 DOM 树并获取多种节点类型(例如文本节点和注释节点)的父元素。 您可以使用 parentNode 属性更轻松地遍历 DOM 树,该属性适用于不同的节点类型。例如,请考虑以下内容: 在此示例中,我们使用 createTextNode 函数生成一个文本节点。然后使用 parentNode 属性检索父元素。在处理包含各种节点的复杂 DOM 结构时,此策略会很有帮助。 将 parentElement 属性与 Shadow DOM 一起使用 如果您正在使用 Shadow DOM(一种支持 DOM 树和 CSS 样式封装的 Web 技术),您可能需要访问 Shadow DOM 边界内的父元素。 在这种情况下,parentElement 属性也适用。 例如,请考虑以下内容: 上述代码中使用 host 元素的 shadowRoot 属性来首先获取 shadow root。然后,使用 getElementById 函数,我们根据其 ID 选择 shadow root 中的子元素。 使用 parentElement 属性,我们最终可以检索父元素。这使您即使在 Shadow DOM 内部也可以访问父元素。 使用 offsetParent 属性定位元素 如果您明确需要定位给定元素的最近定位祖先元素,则可以将 offsetParent 属性与 offsetLeft 和 offsetTop 属性结合使用。 这是一个示例: 在这行代码中,我们首先使用 getElementById 选择目标元素。之后,目标元素的 offsetParent 用于初始化 positionedAncestor 变量。 下一步是使用 while 循环确定当前 positionedAncestor 的计算位置是否为“static”。 如果是,则将 positionedAncestor 更新为当前 positionedAncestor 的 offsetParent。 此过程一直持续到我们找到最接近当前位置的祖先或到达 DOM 树的顶部。 通过使用这些额外的策略和方法,您可以进一步提高在 JavaScript 中检索父元素的能力。这些方法为各种问题提供了解决方案,包括处理 Shadow DOM、处理不同的节点类型以及定位最近的祖先。 选择一种符合您独特要求并提高您的 DOM 操作技能的技术。 如果您正在使用较新的方法或功能,请不要忘记在各种浏览器中彻底测试您的代码以验证兼容性。 一旦您牢牢掌握了这些概念,您将掌握在 JavaScript 中使用父元素并构建动态交互式在线体验所需的知识和技能。 您现在可以在 JavaScript 中使用额外的方法来访问父元素。 了解这些技术将提高您正确修改 DOM 和与其交互的能力,无论您是处理事件处理、动态元素,还是需要查找最近的定位祖先。 始终选择最适合您独特用例的方法,同时牢记浏览器兼容性和项目具体需求。掌握这些方法后,您将具备轻松探索和使用 JavaScript 中父组件所需的技能。 下一主题JavaScript 中的假值 |
Http cookie,也称为网络 cookie,是服务器发送到网络浏览器的一小段数据。浏览器可以存储 cookie 并将其与其他请求一起发送回服务器。cookie 的典型用法是...
阅读 10 分钟
在本文中,我们将解释 JavaScript 和涟漪效应。之后,我们将借助 JavaScript 学习涟漪效应的各种实际示例。JavaScript 是什么意思?JavaScript 是一种客户端高级解释型编程和脚本语言,用于...
阅读 6 分钟
JavaScript 的数字功能使您能够表示数字和浮点数。JavaScript 数字有一个特殊值,称为 NaN 函数,表示 Not-a-Number。NaN 是全局 javascript 对象的属性。全局对象用于在 Web 浏览器中显示窗口对象...
阅读 4 分钟
JavaScript 控制台提供了简单的方法,可以快速有效地在浏览器内部运行 JavaScript 代码。它经常用于许多不同的事情,例如记录某些代码的输出或通过控制台调试代码。除了...
阅读9分钟
要单击网页上的链接,我们需要在 click 事件上触发用户操作。但是,如果我们想使用 JavaScript 以编程方式单击链接,而无需用户事件或其他现象,该怎么办?我们可以使用 JavaScript 来完成。这...
阅读 4 分钟
在学习不同的编程语言时,我们都会听说并学习递归概念。在 JavaScript 中,我们也有递归的概念,其中我们使用了递归函数。因此,在本节中,我们将学习递归,并将看到...
阅读 6 分钟
? JavaScript 可用于创建客户端图像映射。图像映射是网页上的一张图片,具有指向其他页面的多个链接。这些链接称为热点。图像映射用于导航不同的链接到其他页面或在...
阅读 3 分钟
JavaScript 的 focusout 事件是当元素即将失去焦点时执行的事件处理程序。除此之外,我们还学习了 blur,它也是 JavaScript 中使用的事件处理程序。blur 和 focusout 都是焦点...
阅读 3 分钟
我们可以使用 javascript indexedDB 函数删除数据库中的单个或多个数据。我们可以使用键值或 ID 删除整个数据库行。删除 javascript indexedDB 中数据的过程 下面的步骤有助于删除信息。要删除...
阅读 3 分钟
您一定注意到 Web 应用程序功能的效率或 Web 应用程序如何处理用户事件。JavaScript 节流概念提供了提高应用程序性能和速度的机制。节流机制也称为节流方法,是...
阅读 8 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India