元素的子节点

我们先来比较两段代码:

  • 代码1
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
<ul id = "list">
  <li>a</li>
  <li>b</li>
  <li>c</li>
</ul>
 <button onclick = "test()"> 点击</button>
<script>
  function test(){
  var newNode = document.createElement("li");
  var newText = document.createTextNode("e");
  newNode.appendChild(newText);
  
  var mylist = document.getElementById("list");
  mylist.insertBefore(newNode,mylist.childNodes[1]);
}
</script>
</body>
</html>
  • 代码1结果展示
点击按钮前
点击按钮之后
  • 代码2
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
 <ul id = "list"><li>a</li><li>b</li><li>c</li></ul>
 <button onclick = "test()"> 点击</button>
<script>
  function test(){
  var newNode = document.createElement("li");
  var newText = document.createTextNode("e");
  newNode.appendChild(newText);
  
  var mylist = document.getElementById("list");
  mylist.insertBefore(newNode,mylist.childNodes[1]);
  
}
</script>
</body>
</html>
  • 代码2 结果展示


    点击按钮前
点击按钮之后

造成这样差异的原因是:元素的 childNodes 属性包含它所有的子节点,这些子节点有可能是元素,文本节点,注释或者处理指令。不同的浏览器在看待这些节点方面存在显著的不同,如下代码:

<ul id = "list">
  <li>a</li>
  <li>b</li>
  <li>c</li>
</ul>

如果是 IE 来解析这些代码,那么<ul> 元素会有三个子节点,分别是 3个<li> 元素。但是如果在其他浏览器中,<ul> 元素都会有 7个元素,包括 3 个<li>元素和四个文本节点(表示<li>元素之间的空白符)。如果像下面样将元素间的空白符删掉,那么所有的浏览器都会返回相同数目的子节点。

<ul id = "list"><li>a</li><li>b</li><li>c</li></ul>

对于这段代码,<ul>元素在任意浏览器中都会包含3 个子节点。如果需要通过 childNodes 属性遍历子节点那么一定不要忘记浏览器的这一差别。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,786评论 1 92
  • 一、JS前言 (1)认识JS 也许你已经了解HTML标记(也称为结构),知道了CSS样式(也称为表示),会使用HT...
    凛0_0阅读 2,790评论 0 8
  • 第1章 认识JS JavaScript能做什么?1.增强页面动态效果(如:下拉菜单、图片轮播、信息滚动等)2.实现...
    mo默22阅读 1,319评论 0 5
  • 实例化XMLHttpRequest对象。 在使用xhr对象时,要使用的第一个方法是open(). 这里接收三个参数...
    洋葱大大阅读 218评论 0 0
  • 诸葛io-精细化数据分析工具,移动应用分析,移动用户行为分析,数据运营https://zhugeio.com/
    葡萄喃喃呓语阅读 300评论 0 1