美文网首页
DOM的API分类

DOM的API分类

作者: ProgrameLin | 来源:发表于2018-04-21 23:40 被阅读0次

    什么是DOM?

    Document Object Model(DOM 文档对象模型)是HTML和XML文档的编程接口, DOM相当于是文档的一种规范, 可以通过编码对DOM结构进行访问, 作用就是改变页面的构成, 样式, 内容。DOM将web页面文档解析成由节点和若干对象(包含属性和方法的对象)组成的集合。

    我们经常听到的DOM树就类似于下面这种情况


    Snip20180421_6.png

    如何访问DOM?

    当在创建一个脚本时, 无论是使用内嵌或者是<script>标签都可以通过windowdocument提供的API来操作文档或者是获取节点。
    比如:

    <!-- 在页面加载的时候弹出提示框 -->
    <body onload="window.alert('welcome to my home page!');">
    

    也可以这么做

    <script>
        // 页面加载完成后调用该函数
           window.onload = function() {
    
          // 创建一个新的标签h1
           heading = document.createElement("h1");
      
          // 创建一个新的文本节点
           heading_text = document.createTextNode("Big Head!");
    
          // 把文本节点放入到h1 标签中, 也就是说h1的内容为 "Big Head!"
           heading.appendChild(heading_text);
    
           // 把h1 标签追加到body中可以显示出来
           document.body.appendChild(heading);
          }
        </script>
    

    DOM的几种数据类型

    document        表示的就是DOM树, 表示文档本身
    element         表示一个元素或者节点
    nodeList        是一个元素数组, 包含多个元素, 可以通过node[1] 或者node.item(1)访问
    attribute       表示节点或者元素的属性
    

    需要注意的问题

    整个文档是一个文档节点
    每个HTML元素是一个元素节点
    HTML中的文本是文本节点
    HTML的属性是属性节点
    
    每个文档节点都会有一个根(root)节点
    每个节点都会有父节点(parent 除了根节点)
    每个节点都会有若干个子节点(child)
    同胞(sibling)节点就意味着有相同的父节点
    

    DOM API的种类

    获取节点
    getElementById()        根据ID获取元素
    getElementsByTagName()        返回一个或多个带有指定标签的元素集合
    getElementsByClassName()        返回指定className的元素集合
    
    创建节点
    createElement()        创建元素节点
    createTextNode()        创建文本节点
    
    属性操作
    createAttribute()      创建属性节点
    
    getAttribute()        返回指定的属性值
    
    setAttribute()      指定属性设置或修改为指定的值
    
    增加、删除、替换节点
    appendChild()        把节点追加到指定节点
    
    removeChild()        删除子节点
    
    replaceChild()        替换子节点
    
    insertBefore()        在指定的子节点前面插入新的节点
    
    获取元素内容
    innerHTML         获取元素内容
    childNodes 和 nodeValue
    
    nodeName        节点的名称
    nodeValue        节点的值
        
    
    比如在页面中
    <h1 id='h'>welcom to china~</h1>
    
    // 通过innerHTML获取
    var txt = document.getElementById('h').innerHTML;
    
    console.log(txt);
    
    // 通过childNodes 和 nodeValue获取
    var text = document.getElementById('h').childNodes[0].nodeValue;
    
    console.log(text);
    
    修改样式
    var element = document.getElementById('h');
    
    element.style.color = 'blue';
    
    事件操作

    DOM允许JavaScript对HTML的事件作出相应

    // 页面中的h1 标签
    <h1 onmouseover="mouseOn(this)"
          onmouseout ="mouseOut(this)"
          >welcom to china~</h1>
    
    // 对应的js脚本
    // 鼠标悬停到h1 标签上, 修改文本为 Mouse On Now!!!
    function mouseOn(obj) {
      
      obj.innerHTML = "Mouse On Now!!!";
    }
    
    // 鼠标不再悬停在标签上面的时候, 显示 Mouse out Now!!!
    function mouseOut(obj) {
      obj.innerHTML = 'Mouse out Now!!';
    }
    
    
    还有其他事件:
    onclick    点击(先onmousedown 然后 onmouseup 这两个过程完成后才触发onclick)
    onload    进入/加载界面
    onunload    开开界面
    onchange     输入事件
    onmousedown        鼠标点击
    onmouseup       鼠标点击后摊开
    

    相关文章

      网友评论

          本文标题:DOM的API分类

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