当前位置: 首页 > 面试题库 >

如何在Javascript中检查一个元素是否包含在另一个元素中

东门令
2023-03-14
问题内容

如何检查一个DOM元素是否是另一个DOM元素的子元素?有内置的方法吗?例如,类似:

if (element1.hasDescendant(element2))

要么

if (element2.hasParent(element1))

如果没有,那么有什么想法怎么做?它还需要跨浏览器。我还应该提到,孩子可以嵌套在父级以下的多个级别。


问题答案:

更新: 现在有一种本地方法可以实现此目的。Node.contains()。在评论中也提到了答案。

旧答案:

使用该parentNode属性应该可以。从跨浏览器的角度来看,它也是非常安全的。如果已知这种关系是一级的,则可以简单地检查一下:

if (element2.parentNode == element1) { ... }

如果可以将孩子任意地嵌套在父对象的深处,则可以使用类似于以下内容的函数测试这种关系:

function isDescendant(parent, child) {
     var node = child.parentNode;
     while (node != null) {
         if (node == parent) {
             return true;
         }
         node = node.parentNode;
     }
     return false;
}


 类似资料:
  • 问题内容: 如何轻松检查一个ArrayList中的所有元素是否都是另一ArrayList的所有元素? 问题答案: 使用Collection.containsAll():

  • 问题内容: 我有两个带有不同对象的列表。 我想检查list2中的元素是否存在于list2中,基于特定的属性(Object1和Object2具有(以及其他),一个共有属性(类型为Long),名为attributeSame)。 现在,我这样做是这样的: 但是我认为有一种更好,更快的方法可以做到这一点:)有人可以提出吗? 谢谢! 问题答案: 如果只需要测试基本相等性,则可以使用基本JDK来完成,而无需在

  • 我有两个不同对象的列表。 我想根据特定的属性(Object1和Object2有一个共同的属性(类型为Long),名为AttributeName),检查list2中是否存在list1中的元素。 现在,我是这样做的: 但我认为有更好更快的方法可以做到这一点:)有人能提出吗? 谢谢

  • 我试图通过一个元素在表中找到一行,然后在该行中找到一个元素并返回一个属性(或者做其他事情)。 这里的JavaSelenium代码查找一个表体。getText()准确地打印出每行中的文本,但s.findElement(xpath)除外。getText()将返回唯一的\u单元格\u名称,无论行是否包含该名称。并且if语句将在每个循环中输入。 我怎么修理它?为什么getText()返回正确的文本,但在同

  • 问题内容: 我可能在这里找不到一个简单的单行代码,但这是我的问题: 如何检查ArrayList是否包含另一个ArrayList中的所有对象?我正在寻找(如果存在的话)类似的东西: 例如: 问题答案: 接口中有一个声明的方法。在您的设置中给出所需的答案。