(23)使用DOM插入新元素,每次插入的新节点放在最前面

要求每次新插入的新li节点出现在最前面,则用insertBefore方法,但是如果开始没有li标签的话,直接用insertBefore方法会出错,所以此处必须作一判断:如果没有li标签,则用appendChild方法(一般情况下是第一次插入的时候),如果有li标签,就用insertBefore方法插入。

<!DOCTYPE HTML>
<!--
	DOM创建元素,①创建li,②再插入相应的父级中去。每次插入的新节点都是放在最前面的
-->
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
	window.onload=function ()
	{
		var oBtn=document.getElementById('btn1');
		var oU1=document.getElementById('ul1');
		var oTxt=document.getElementById('txt1');
		var aLi=oU1.getElementsByTagName('li');//获取所有的li
		oBtn.onclick=function ()
		{
		  var oLi=document.createElement('li');//创建了li子节点,但是并没有添加进去
		   oLi.innerHTML=oTxt.value;
		  //oU1.appendChild(oLi);//父级.appendChild(子节点);添加子节点的方法,不过新节点是从后面开始添加的
		
		  //本来就没有li节点,如果直接用insertBefore会出错,所以判断一下原来是存在li标签还是不存在,如果存在则调用insetBefore,不存在就用appendChild
		  if(aLi.length>0)
		  {
			oU1.insertBefore(oLi,aLi[0]);//第一个参数是要插入的元素,第二个参数是在哪个元素之前插入
		   }else{
     			
		  	oU1.appendChild(oLi);
		   }
			

		};
	};

 </script>
</head>

<body>
<input id="txt1" type="text"/>
<input id="btn1" type="button" value="创建li"/>

<ul id="ul1">
</ul>
</body>
</html>
效果图:

(23)使用DOM插入新元素,每次插入的新节点放在最前面_第1张图片

你可能感兴趣的:((23)使用DOM插入新元素,每次插入的新节点放在最前面)