<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
</head>
<body>
<ul id="test"><li>JavaScript</li><li>HTML</li></ul> 
<script type="text/javascript">
  var otest = document.getElementById("test");  
  var newli = document.createElement("li");
  newli.innerHTML="php";
  otest.insertBefore(newli,otest.lastChild);
  
</script> 
</body>
</html>输出为
Javascript
php
HTML
代码改为
<ul id="test"><li>JavaScript</li> <li>HTML</li> </ul>
之后输出变成
Javascript
HTML
php
你换行后如果你用的IE浏览器应该不会出现这问题。如果其他浏览器,<li>HTML</li>后面会有一个空白节点(虽然是空白的,但也是节点),otest.insertBefore(newli,otest.lastChild);,这里面会把空白节点当做lastChild,在空白节点之前插入,那么插入的节点仍然在HTML的后面。所以在示例里面将这么一串写在一行就是为了避免出现这个问题。
可以再复习一下9-8节,里面提到过空白节点。
一个包含在ul标签里面,一个在ul标签外面,所以结果不同