上一节我们学会了怎么创建元素,如果仅仅是创建一个元素而没有插入到HTML文档中,这样的操作是没有任何意义的。这一节我们来学一下怎么把创建好的元素插入到已经存在的元素中。在JavaScript中,插入元素有以下2种方法。

    一、appendChild()

    在JavaScript中,我们可以使用appendChild()把一个新元素插入到父元素的内部子元素的 末尾

    语法:

    A.appendChild(B);

    说明:

    A表示父元素,B表示动态创建好的新元素。后面章节中,如果没有特殊说明,A都表示父元素,B都表示子元素。

    举例:

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script> window.onload = function () { var oBtn = document.getElementById("btn"); //为按钮添加点击事件 oBtn.onclick = function () { var oUl = document.getElementById("list"); var oTxt = document.getElementById("txt"); //将文本框的内容转换为“文本节点” var textNode = document.createTextNode(oTxt.value); //动态创建一个li元素 var oLi = document.createElement("li"); //将文本节点插入li元素中去 oLi.appendChild(textNode); //将li元素插入ul元素中去 oUl.appendChild(oLi); }; } </script> </head> <body> <ul id="list"> <li>HTML</li> <li>CSS</li> <li>JavaScript</li> </ul> <input id="txt" type="text"/><input id="btn" type="button" value="插入" /> </body> </html>

    默认情况下,预览效果如下图所示。

    我们在文本框中输入“jQuery”,然后点击【插入】按钮后,此时预览效果如下图所示。

    分析:

    oBtn.onclick = function() { …… };

    上面表示为一个元素添加点击事件,所谓“点击事件”,指的是当我们点击按钮后会做些什么。这个跟前面讲到的window.onload是非常相似的,只不过window.onload表示页面加载完成后会做些什么,而oBtn.onclick表示点击按钮后会做些什么。当然,这种写法我们在后面“11.3 鼠标事件”这一节会详细介绍。

    二、insertBefore()

    在JavaScript中,我们可以使用insertBefore()方法将一个新元素插入到父元素中的某一个子元素“之前”。

    语法:

    A.insertBefore(B,ref);

    说明:

    A表示父元素,B表示新子元素。ref表示指定子元素,在这个元素之前插入新子元素。

    举例:

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script> window.onload = function () { var oBtn = document.getElementById("btn"); oBtn.onclick = function () { var oUl = document.getElementById("list"); var oTxt = document.getElementById("txt"); //将文本框的内容转换为“文本节点” var textNode = document.createTextNode(oTxt.value); //动态创建一个li元素 var oLi = document.createElement("li"); //将文本节点插入li元素中 oLi.appendChild(textNode); //将li元素插入到ul的第1个子元素前面 oUl.insertBefore(oLi, oUl.firstElementChild); } } </script> </head> <body> <ul id="list"> <li>HTML</li> <li>CSS</li> <li>JavaScript</li> </ul> <input id="txt" type="text"/><input id="btn" type="button" value="插入" /> </body> </html>

    默认情况下,预览效果如下图所示。

    我们在文本框中输入“jQuery”,然后点击【插入】按钮后,浏览器预览效果如下图所示。

    分析:

    oUl.firstElementChild表示获取ul元素下的第一个子元素。大家仔细比较一下这两个例子,就能看出appendChild()和insertBefore()这两种插入方法的不同了。实际上,这两种方法其实刚好是互补关系(如下图所示):appendChild()是在父元素最后一个子元素后面插入;而insertBefore()是在父元素任意一个子元素之前插入。这样使得我们可以将新元素插入任何地方。

    此外需要注意一点,appendChild()和insertBefore()这两种插入元素的方法都需要获取父元素才可以操作。