DOM相关

作者: YC____ | 来源:发表于2018-05-27 22:25 被阅读10次

    DOM(文档对象模型是针对HTML和XML文档的一个API)

    节点层次

    1.node类型

    (1)DOM1级定义了一个Node接口,该接口将由DOM中的所有节点类型实现。

    (2)节点关系

    每一个节点都有一个childNodes属性,保存一个类数组对象NodeList.

    转化类数组对象为数组
    function converToArray(nodes){
        var array = null;
        try{
            //返回一个新数组
            array = Array.prototype.slice(someNode.childNodes,0);
        }
        catch{
            array = new Array()
            for(var i = 0; i < i.length; i++ ){
                array.push(nodes[i])
            }
        }
        return array;
    }
    

    (3)节点方法

    appendChild() 向childNodes列表末尾插入节点
    var span = document.createElement('span');
    span.innerText = '1';
    res.appendChild(span);
    insertBefore() 接受2个参数,要插入的节点和作为参照的节点,如果参照节点不传,则和appendChild作用相同
    replaceChild() 接收2个参数,要插入的节点和要替换的节点
    removeChild() 移除否个节点
    var formaerFirstChild = someNode.removeChild(someNode.firstChild)
    cloneNode() 接受一个参数,是否执行深度复制

    2.Document类型

    (1)文档的子节点

    在浏览器中, document 对象是 HTMLDocument(继承自 Document 类型)的一个实例,表示整个 HTML 页面。而且, document 对象是 window 对象的一个属性,因此可以将其作为全局对象来访问
    var body = document.body //取得对body的引用
    var doctype = document.doctype //取得对<!DOCTYPE>的引用

    (2)文档信息

    document.title = 'New page title' //设置文档标题
    document.URL //取得完整的 URL
    document.domain //取得域名
    document.referrer //取得来源页面的 URL

    (3)查找元素

    getElementById()和 getElementsByTagName()和 getElementsByClassName()
    document.querySelector() //返回匹配的第一个元素
    document.querySelectorAll() // 返回一个NodeList

    (4)特殊集合

    document.anchors 包含文档中所有带 name 特性的<a>元素;
    document.applets 包含文档中所有的<applet>元素,因为不再推荐使用<applet>元素,所以这个集合已经不建议使用了;
    document.forms 包含文档中所有的<form>元素,与 document.getElementsByTagName("form")得到的结果相同;
    document.images 包含文档中所有的<img>元素,与 document.getElementsByTagName("img")得到的结果相同;
    document.links 包含文档中所有带 href 特性的<a>元素

    (5)DOM一致性检测

    var hasXmlDom = document.implementation.hasFeature("XML", "1.0");

    (6)文档写入

    write()、 writeln()、 open()和 close()

    3.Element

    (1)HTML元素

    id 元素在文档中的唯一标识符。
    title 有关元素的附加说明信息,一般通过工具提示条显示出来。
    className 与元素的 class 特性对应,即为元素指定的 CSS 类。没有将这个属性命名为 class
    lang 元素内容的语言代码
    dir 语言的方向 ltr/rtl

    (2)元素属性

    getAttribute()、 setAttribute()和 removeAttribute()

    (3)创建元素

    document.createElement("<div id="myNewDiv" class="box"></div >")

    4.Text类型

    文本节点由Text类型表示
    document.createTextNode("<strong>Hello</strong> world!");

    DOM操作技术

    1.动态脚本

    动态加载的外部 JavaScript 文件能够立即运行,比如下面的<script>元素

    <script type="text/javascript" src="client.js"></script>
    function loadScript(url){
        var script = document.createElement('script');
        script.type = 'text/javscript';
        script.src = url
        document.body.appendChild(script);
    }
    

    2.动态样式

    function loadStyles(url){
        var link = document.createElement("link");
        link.rel = "stylesheet";
        link.type = "text/css";
        link.href = url;
        var head = document.getElementsByTagName("head")[0];
        head.appendChild(link);
    }
    loadStyles("styles.css");
    

    3.操作表格

    var table = document.createElement('table');
    table.border = 1;
    table.width = '100%';
    var tbody = document.createElement('tbody');
    table.appendChild(tbody);
    //创建第一个行
    tbody.insertRow(0);
    tbody.rows[0].insertCell(0);
    tbody.rows[0].cells[0].appendChild(document.createTextNode('cell 1-1'))
    tbody.rows[0].insertCell(1);
    tbody.rows[0].cells[0].appendChild(document.createTextNode('cell 1-2'))
    

    HTML5扩展

    (1)classList属性

    add(value):将给定的字符串值添加到列表中。如果值已经存在,就不添加了。
    contains(value):表示列表中是否存在给定的值,如果存在则返回 true,否则返回 false。
    remove(value):从列表中删除给定的字符串。
    toggle(value):如果列表中已经存在给定的值,删除它;如果列表中没有给定的值,添加它

    (2)自定义数据属性dataset

    //设置dataset
    div.dataset.appId = 23456;

    (3)插入标记

    innerHTML,outerHTML

    DOM2 DOM3级

    样式

    1.访问元素的样式

    2.操作元素的样式表

    3.元素的大小。元素的可见大小由其高度,宽度决定。

    (1)偏移量

    获取元素组屏幕上占用的所有可见的空间
    offsetHeight,offsetWidth(包括内容,内边距,边框)
    offsetLeft,offsetTop

    (2)客户区大小

    指的是元素内容及其内边距所占的大小(不包括边框)
    clientHeight,clientWidth

    (3)滚动大小

    scrollHeight 元素的总高度
    scrollWidth 元素的总宽度
    scrollLeft 元素滚动的left位置
    scrollTop

    (4)元素的位置

    left,top,right,bottom

    4.遍历

    5.范围

    相关文章

      网友评论

        本文标题:DOM相关

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