JS中的DOM

    DOM文档对象模型

  HTML中每个内容(标签、文本内容、属性)都是一个节点对象Node。

  node(节点)的属性

三大属性:

  1、nodeType节点类型

    专门区分节点的类型:

      document  9

       element    1

       attribute         2

          text             3

  2、nodeName节点名称

    document  #document

      element  全大写的标签名

      attribute  属性名

      text   #text

  3、nodeValue节点值

      null  

      null

      属性

      文本内容

    DOM的操作之查找

查找:

  1、直接获取的三个元素:

    html  document.documentElement

    head      .head

    body      .body

  2、节点关系

    父子关系:

      node.parentNode  返回node的父节点

      node.childNodes   返回Node的所有直接子节点

      node.firstChild    返回node下第一个子节点

      node.lastChild    返回node下最后一个子节点

    兄弟关系:

      node.previousSibling  返回当前节点前一个兄弟节点

      node.nextSibling    获得当前节点后一个兄弟节点

  不但包含有用的元素节点,还包含了看不见的换行、空格干扰。

  下一种方法只获取节点信息:

  父子关系:

    elem.parentElement  返回一个父元素对象

            .children     返回子元素对象的集合(IE8支持)

            .firstElementChild   返回第一个子元素对象 

            .lastElementChild 返回最后一个子元素对象

  兄弟关系:

            .previousElementSibling 返回当前元素的前一个兄弟元素对象

            . nextElementSibling    返回当前元素的下一个兄弟元素对象(IE9+)

  

    按HTML查找

what?

  在整个网页或指定父元素下,查找属性或标签符合要求的元素对象。

what?

  只要是按照基本的条件有选择的查找元素。

四种方法:

  1、通过id查找html元素

  2、通过类名查找html元素

  3、通过标签名查找html属性

  4、通过元素的name属性查找html元素

  

  按选择器查找:

按HTML查找每一次只能使用一个查询条件,选择器查找条件复杂的都可以查找。

  1、仅查找一个元素:

    var  elem = 父元素.querySelector(“选择器”);

  2、查找多个元素:

    var  elem = 父元素.querySelectorAll(“选择器”);

   非动态!

  

 鄙视题: getXXX vs SeletorAPI的差别是什么? 如何选择?

  1、返回值: getXXX 返回值:动态集合
     SeletorAPI 返回值:非动态集合
  2、效率: getXXX 首次查询效率高
     SeletorAPI 首次查询效率低
  3、易用: getXXX 条件复杂是,更繁琐


  SeletorAPI 更简单,因为繁琐的工作就交给了选择器
  如果通过一个条件就可以得到元素时,首选getXXX;
  如果条件复杂时,首选SeletorAPI

  

在JS中修改html:

  DOM分两种,核心DOM,HTML DOM。

核心DOM:可以操作一切结构文档的API(HTML和XML)

  优点:万能  缺点:繁琐

HTML DOM:对核心DOM中常用的API的简化

  优点:简单  缺点:不是万能,只有对部分API的简化

视情况而定使用哪种方法,优先用简单的。

  核心DOM访问属性:

    获得属性值:var value = elem.getAttribute("属性名");

    修改属性值:elem.setAttribute("属性名","属性值");

    判断是否包含属性:var bool != elem.hasAttribute("属性名");

    移除属性:elem.removeAttribute("属性名");

  HTML DOM属性:

    elem.属性名;

    elem.属性名 = "属性值";

    elem.属性名 != "";  //判断是否为空则判断是否包含属性

    elem.属性名 = "";  //属性名设为空则删除

猜你喜欢

转载自www.cnblogs.com/yeming980912/p/10981536.html
今日推荐