关于insertBefore()方法的,为什么这样不行

来源:9-13 插入节点insertBefore()

浪涛飞

2016-03-05 21:45

<!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.getElementsByTagName("li").innerHTML="HTML";
  var newnode=document.createElement("li");
  newnode.innerHTML="PHP";
  otest.insertBefore(newnode,node);
  
</script> 

</body>
</html>


写回答 关注

1回答

  • 慕仰1571740
    2016-03-05 22:14:52
    已采纳

    第一:var node=document.getElementsByTagName("li").innerHTML="HTML";
    document.getElementsByTagName("li")是获取标签名为li的标签组合,相当于获得一个节点数组,不可以直接用innerHTML属性

    第二:题目要求在内容为HTML标签插入新标签,但是演示直接给了第一句:var otest = document.getElementById("test"),因此需要通过它来获取插入的节点的,内容为HTML的标签是otest节点的第二个子节点也是最后一个子节点,所以用otest,childNodes[1]或者otest.lastChild获取插入位置的节点:otest.insertBefore(newnode,otest.childNodes[1])或者otest.insertBefore(newnode,otest.lastChild)

    浪涛飞

    非常感谢!

    2016-03-06 11:50:09

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468060 学习 · 21891 问题

查看课程

相似问题