正确使用insertBefore()的方式

时间:2019-09-01 15:18:38

标签: javascript

我正在尝试使用insertBefore添加元素,但是它不起作用。

这两个代码有什么区别?为什么一个有效而另一个无效?

工作代码:https://www.w3schools.com/code/tryit.asp?filename=G7KF9MQKIA2C

不起作用:https://www.w3schools.com/code/tryit.asp?filename=G7KF978GWI24

在没有父div的情况下使用insertBefore时,似乎可以找到我想要的div的ID。我目前正在尝试将其用于更复杂的文件中,并且无法正常运行,它显示“未找到节点”。

1 个答案:

答案 0 :(得分:0)

父子连接是该功能正常工作的重要条件

  

insertBefore()方法将一个节点作为子节点插入,紧接在   您指定的现有孩子。

您无法使用的代码将按以下方式工作(再次参见定义)。 一种有效的方法是因为父html元素是正文html元素。

<div id="parent">
  <div id="A"> 

  a
  </div>
  <div id="B"> 
  b

  </div>
  <div id="C"> 
  c

  </div>
</div>
<script>

var newDiv = document.createElement("div"); 
newDiv.innerHTML = "asdf";
newDiv.id = "idtest";

var currentDiv = document.getElementById("B"); 
document.getElementById('parent').insertBefore(newDiv, currentDiv); 
</script>