如何判断动态创建的 DOM 元素是否被添加到了页面中?

在前端开发中,我们可能需要动态地创建新的 DOM 元素并将其添加到页面中。但是,在某些情况下,我们需要知道这些元素是否已经成功地添加到了页面中。本文将介绍几种方法来判断一个动态创建的 DOM 元素是否已经被添加到了页面中。

方法一:使用 document.contains()

我们可以使用 document.contains() 方法来判断一个元素是否被添加到了 DOM 中。这个方法接收一个参数,即需要检查的元素,并返回一个布尔值表示该元素是否存在于当前文档中。

示例代码

----- ---------- - ------------------------------
-------------------------------------- -- ----------
------------------------------------------- -- -- ----

在上面的示例代码中,我们首先创建了一个新的 div 元素并将其添加到了页面中。然后,我们使用 document.contains() 方法来判断该元素是否存在于文档中,并将结果输出到控制台中。由于我们已经将该元素添加到了页面中,因此 document.contains() 方法返回的结果为 true

方法二:使用父元素的 contains() 方法

除了使用 document.contains() 方法外,我们还可以使用父元素的 contains() 方法来判断子元素是否已经被添加到了 DOM 中。这个方法与 document.contains() 方法类似,只不过是在一个指定的元素上进行判断。

示例代码

----- ------------- - ----------------------------------
----- ---------- - ------------------------------
-------------------------------------- -- -----------
------------------------------------------------ -- -- ----

在上面的示例代码中,我们首先获取了一个父元素,并创建了一个新的 div 元素并将其添加到了该父元素中。然后,我们使用父元素的 contains() 方法来判断子元素是否存在于父元素中,并将结果输出到控制台中。由于我们已经将该元素添加到了父元素中,因此 contains() 方法返回的结果为 true

方法三:使用 MutationObserver

除了以上两种方法之外,我们还可以使用 MutationObserver 来监测 DOM 变化,并在新元素被添加到页面中时触发相应的回调函数。

示例代码

----- ---------- - --------------
----- ------ - - ---------- ---- --
----- -------- - ----------------------- --------- -
  ------- -------- -- -------------- -
    -- -------------- --- ------------ -
      ------- --------- -- -------------------- -
        --------------------- --- ------ -
          ---------------- ------- ----- -- ------ -----------
        -
      -
    -
  -
--

----- -------- - --- ---------------------------
---------------------------- --------

----- ---------- - ------------------------------
-------------------------------------- -- ----------

在上面的示例代码中,我们首先创建了一个 MutationObserver 对象,并指定了需要监测的目标节点以及相应的配置。然后,我们定义了一个回调函数,在新元素被添加到页面中时触发。在回调函数中,我们可以通过遍历 mutation.addedNodes 属性来查找新添加的元素,并进行相应的处理。

结论

以上是三种判断动态创建的 DOM 元素是否被添加到页面中的方法。使用这些方法,我们可以更好地控制和管理页面中的元素,并提高我们的开发效率。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/26595