美文网首页
【JS】JS中常见原生DOM操作API

【JS】JS中常见原生DOM操作API

作者: 沫之 | 来源:发表于2018-05-01 10:45 被阅读0次

    几种对象

    1.Node

    Node是一个接口,中文叫节点,很多类型的DOM元素都是继承于它,都共享着相同的基本属性和方法。常见的Node有 element,text,attribute,comment,document 等(所以要注意 节点 和 元素 的区别,元素属于节点的一种)。

    Node有一个属性 nodeType 表示Node的类型,它是一个整数,其数值分别表示相应的Node类型,具体如下:

    ELEMENT_NODE: 1,// 元素节点  

    ATTRIBUTE_NODE: 2,// 属性节点  

    TEXT_NODE: 3,// 文本节点  

     DATA_SECTION_NODE: 4,  

     ENTITY_REFERENCE_NODE: 5,  

      ENTITY_NODE: 6,  

      PROCESSING_INSTRUCTION_NODE: 7,  

      COMMENT_NODE: 8,// 注释节点  

       DOCUMENT_NODE: 9,// 文档  

        DOCUMENT_TYPE_NODE: 10,  

        DOCUMENT_FRAGMENT_NODE: 11,// 文档碎片  

        NOTATION_NODE: 12,  

        DOCUMENT_POSITION_DISCONNECTED: 1,  

        DOCUMENT_POSITION_PRECEDING: 2,  

        DOCUMENT_POSITION_FOLLOWING: 4,  

        DOCUMENT_POSITION_CONTAINS: 8,  

        DOCUMENT_POSITION_CONTAINED_BY: 16,  

        DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: 32  

    2.NodeList

    NodeList 对象是一个节点的集合,一般由 Node.childNodes 、 document.getElementsByName 和 document.querySelectorAll 返回的。

    不过需要注意, Node.childNodes 、 document.getElementsByName 返回的 NodeList 的结果是实时的(此时跟HTMLCollection比较类似),而 document.querySelectorAll 返回的结果是固定的,这一点比较特殊

    var childNodes = document.body.childNodes;  

    console.log(childNodes.length);// 如果假设结果是“2”  

    document.body.appendChild(document.createElement('div'));  

    console.log(childNodes.length);// 此时的输出是“3”  

    3.HTMLCollection

    节点查找API

    document.getElementById :根据ID查找元素,大小写敏感,如果有多个结果,只返回第一个;

    document.getElementsByClassName :根据类名查找元素,多个类名用空格分隔,返回一个 HTMLCollection 。注意兼容性为IE9+(含)。另外,不仅仅是document,其它元素也支持 getElementsByClassName 方法;

    document.getElementsByTagName :根据标签查找元素, * 表示查询所有标签,返回一个 HTMLCollection 。

    document.getElementsByName :根据元素的name属性查找,返回一个 NodeList 。

    document.querySelector :返回单个Node,IE8+(含),如果匹配到多个结果,只返回第一个。

    document.querySelectorAll :返回一个 NodeList ,IE8+(含)。

    document.forms :获取当前页面所有form,返回一个 HTMLCollection ;

    节点创建API

    节点创建API主要包括 createElement 、 createTextNode 、 cloneNode 和 createDocumentFragment (创建文档碎片)四个方法。

    节点修改API

    节点修改API都具有下面这几个特点:

    不管是新增还是替换节点,如果其原本就在页面上,那么原来位置的节点将被移除;

    修改之后节点本身绑定的事件不会消失;

    appendChild/insertBefore/removeChild/replaceChild

    节点关系API

    DOM中的节点相互之间存在着各种各样的关系,如父子关系,兄弟关系等。

    父关系API

    parentNode :每个节点都有一个parentNode属性,它表示元素的父节点。Element的父节点可能是Element,Document或DocumentFragment;

    parentElement :返回元素的父元素节点,与parentNode的区别在于,其父节点必须是一个Element元素,如果不是,则返回null;

    子关系API

    children :返回一个实时的 HTMLCollection ,子节点都是Element,IE9以下浏览器不支持;

    childNodes :返回一个实时的 NodeList ,表示元素的子节点列表,注意子节点可能包含文本节点、注释节点等;

    firstChild :返回第一个子节点,不存在返回null,与之相对应的还有一个 firstElementChild ;

    lastChild :返回最后一个子节点,不存在返回null,与之相对应的还有一个 lastElementChild ;

    兄弟关系型API

    previousSibling :节点的前一个节点,如果不存在则返回null。注意有可能拿到的节点是文本节点或注释节点,与预期的不符,要进行处理一下。

    nextSibling :节点的后一个节点,如果不存在则返回null。注意有可能拿到的节点是文本节点,与预期的不符,要进行处理一下。

    previousElementSibling :返回前一个元素节点,前一个节点必须是Element,注意IE9以下浏览器不支持。

    nextElementSibling :返回后一个元素节点,后一个节点必须是Element,注意IE9以下浏览器不支持。

    元素属性型API

    setAttribute、getAttribute

    样式相关API

    直接修改元素的样式

    elem.style.color = 'red';  

    elem.style.setProperty('font-size', '16px');  

    elem.style.removeProperty('color');  

    动态添加样式规则

    var style = document.createElement('style');  

    style.innerHTML ='body{color:red} #top:hover{background-color: red;color: white;}';  

    document.head.appendChild(style);  

    window.getComputedStyle

    通过 element.sytle.xxx 只能获取到内联样式,借助 window.getComputedStyle 可以获取应用到元素上的所有样式,IE8或更低版本不支持此方法。

    getBoundingClientRect

    getBoundingClientRect 用来返回元素的大小以及相对于浏览器可视窗口的位置,用法如下:

    相关文章

      网友评论

          本文标题:【JS】JS中常见原生DOM操作API

          本文链接:https://www.haomeiwen.com/subject/wldxrftx.html