除了在指定的父容器中插入元素,js也支持指定一个同级元素,在这个同级元素的前面或者后面插入一个新元素。这里我们需要用到insertBefore方法。
在指定元素前后添加元素
这是一个极简的页面,我们准备将label元素插入到表单的div附近:
<!DOCTYPE HTML>
<head>
<title>无标题文档</title>
<style>
#container{
width:300px;
height:300px;
border:1px solid black;
}
</style>
</head>
<body>
<label id="test">我是一个测试元素</label>
<form id="container">
<h3>我是一个测试容器</h3>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
</form>
</body>
</html>
同样先获取label元素:
label=document.getElementById('test');
接着获取div元素,因为使用标签名选择,所以返回的是个数组:
label=document.getElementById('test');
插入到第一个元素之前:
div[0].parentNode.insertBefore(label,div[0]);
插入到第二个元素之前:
div[1].parentNode.insertBefore(label,div[1]);
插入到第二个元素之后:
div[1].parentNode.insertBefore(label,div[1].nextSibling);
关于insertBefore的使用
insertBefore(newDiv, SelectDiv)
使用该方法,可以添加一个新的元素到指定元素的前面,而使用appendChild方法只能将新的元素添加到父元素末尾,insertBefore相对更加的灵活,尤其对于需要使用排序的方法的时候,更为高效。
针对table的内容进行插入的话,那么所针对的对象就必须是tbody才可以,在一个table中,是可以允许多个tbody存在的,但不能针对tr和td进行操作,对应tr和td操作可以依靠insertRow和insertCell来进行。