<!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 node = document.getElementById("otest.lastChild");
var newnode = document.creatElement("li")
newnode.innerHTML="PHP"
otest.insertBefore(newnode,node);
</script>
</body>
</html>
var node = document.getElementById("otest.lastChild")
这句话有问题,你的ById找不到这个子节点,id是唯一的,并不能拿来跟标签的子节点用,得设过id=“xxx”;才能用xxx,
修改代码:
var otest = document.getElementById("test");
var newnode = document.creatElement("li")
newnode.innerHTML="PHP"
otest.insertBefore(newnode,test.lastChild);
这个地方的test.lastChild为什么可以用,是因为insertBefore()这个方法的第二个属性是插入位置,这个位置可以是节点也可以是id,也可以是标签
你这句执行不了啊!
var node = document.getElementById("otest.lastChild");
document.getElementById()是用括号里的字符串比较HTML文档中的所有id值,返回相应节点。
而id="otest.lastChild"的节点是不存在的。
最简洁的答案(通俗易通-->点赞):
<!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 html=otest.childNodes[1];
var li=document.createElement('li');
li.innerHTML='php';
otest.insertBefore(li,html);
</script>
</body>
</html>
稍微改一下就OK啦:
<!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 node = otest.lastChild; //方法1
// var node = otest.childNodes[1]; 方法2
var newnode = document.createElement("li");
newnode.innerHTML = "php";
otest.insertBefore(newnode,node);
</script>
</body>
</html>