<!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">
o = document.getElementById("test");
var ll=document.createElement('li');
ll.innerHTML='php';
for(var i=0;i<3;i++){o.insertBefore(ll,o.firstChild)};
</script>
</body>
</html>
因为你只是新建了一个element,并且你输出的不是o,而是每次输出一个insertBefore操作,试试把代码换成以下形式,就可以实现你想要的效果。
<!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">
o = document.getElementById("test");
for(var i=0;i<3;i++){
var ll=document.createElement('li');
ll.innerHTML='php';
o.insertBefore(ll,o.firstChild);
}
</script>
</body>
</html>
因为每次for循环的时候o节点,也就是整个ul是变化的,每次o.firstChild都在变化,不是因为insertBefore是插在某节点的前面,只要每次插在第一个的前面就OK啦。