用dir展开一个元素   上面的都是属性               方法都在__proto__中 

  1.dom节点  (document object model        文档对象模型)

  document>documentElement>body>TagName 

  clidNodes (获取子节点列表的集合)  (白话:孩子节点的总数)

  firstchild (第一个节点)

  2.我们常用的节点类型:

  1.元素节点(标签)

  2.属性节点(标签里面的属性)

  3.文本节点(标签里面的内容)

   案例: <div id="aa">

         hello world

       </div>               (div代表的是元素节点    id代表的是属性节点          hello world代表的文本节点)

  元素中有一个nodetype 的属性来判断节点 返回值为数字

      1代表元素节点

      2代表属性节点

      3代表文本节点

  4.节点的获取(重中之重)

  获取元素节点的很多方法

document.getElementById()
  document.getElementsByClassName()
  document.getElementsByTagName()
  document.querySelector()
  document.querySelectorAll()

  属性节点获取

  元素.getAttribute("属性名")     获取元素的属性值

  元素.attributes      获取元素身上所有属性构成的集合    如果想得到里面的属性值 元素.attributes[1].value

  元素.setAttribute("属性名","属性值")  给元素设置属性和属性值

  元素.setAttribute("id","aa")

  元素.removesetAttribute("属性")      删除元素属性

  文本节点

  没有获取的方法(无意义)

  标准浏览器(ie8以上的高版本浏览器)      非标准浏览器(ie8以下的低版本浏览器)

  标准浏览器会把文本节点也当成他的子节点

  5.兼容性:

  获取元素子节点的

  元素.childNodes   这个属性有兼容性,标准浏览器会获取到文本节点,而低版本不会, 所以建议使用children这个属性   (这个属性:只读)

  元素.children

  获取单个子节点;

  获取第一个子节点

  标准浏览器下:元素.firstElementChild;

  非标准浏览器下:元素.firstchild

  兼容性写法:元素.firstElementChild||元素.firstchild

  获取最后一个子节点:元素.lastElementChild

  标准浏览器下:元素.lastElementChild

  非标准浏览器下:元素.lastchild

  兼容性写法:元素.lastElementChild||元素.lastchild

  获取上一个节点: 元素.nextElementSibling

  标准浏览器下:元素.nextElementSibling

  非标准浏览器下:元素.nextsibling

  兼容性写法:元素.nextElementSibling||元素.nextsibling

  获取上一个子节点:元素.previousElementSibling

  标准浏览器下:元素.previousElementSibling

  非标准浏览器下:元素.previoussibling

  兼容性写法:元素.previousElementSibling||元素.previoussibling

  6.获取父节点:parentNode

  元素.parentNode   (不会涉及到兼容性问题,放心使用)

  7.区分offsetparent和parentNode的区别?

   案例:

<div id="ha">   {position:relative}
        <div id="he">
          <div id="zhang">   {position:absolute}
          </div>
        </div>
      </div>

  offsetparent是跟定位有关的 所以他的父级是ha            parent Node的父级就是他的上一级he

  二。动态创建节点:   在空的div中添加内容

  添加内容的几种方法;

  1. 字符串拼接     (添加事件不起作用)

  2.动态创建           (消耗性能最大)

  3.模板创建         (字符串拼接的封装版)

  4.文档碎片   (最好用的 方法一和方法二的结合)

  创建节点

  1.生成节点的方法:document.creatElement("div")

  2.插入节点:  fu元素.appendchild(新节点)      在父节点的后面添加新的节点

  3.在指定的位置中插入新的节点

  父元素.insertBefore(新节点,谁的前面)          将新的节点插入到指定元素的前面

  4.删除元素节点

  父级.removechild(要删除的节点)