zoukankan      html  css  js  c++  java
  • JS学习专辑(3) DOM

      BOM看过了,现在再来看一下DOM,这两个都是挺基础重要的东西。先简单的学习下DOM入个门先。首先肯定要知道什么是DOM:在HTML中,DOM通过 JavaScript,可以重构整个 HTML 文档。可以添加、移除、改变或重排页面上的项目。

      上次说到的document对象,每个载入浏览器的 HTML 文档都会成为 Document 对象。Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。这个可以主要参考:HTML DOM Document 对象参考手册

      但在学习的过程,主要还是需要对节点的操作有一些基础的掌握。DOM中在HTML中,每一个文档中的成分都是一个节点。节点中有等级关系。下面的图是HTML中的DOM树:

    DOM HTML 树

      通过DOM,就可以访问到每个节点。比如通过getElementsByTagName()、getElementsByName()和getElementById()可查找整个 HTML 文档中的任何 HTML 元素。前两种种是可以返回一个所有TagName(Name)特性等于指定值的元素的NodeList,后一种直接返回id特性指定值的元素。下面就用了这三个方法(我偷懒的写在了一起):

    View Code
    <body>
    <p>p1</p>
    <p>p2</p>
    <p>p3</p>
    <script type="text/javascript">
    var Plist=document.getElementsByTagName("p");
    alert(Plist.length);
    </script>
    </body>
    
    <div name="ByName">
    TEST
    </div>
    <script>
    var MyElement=document.getElementsByName("ByName");
    alert(MyElement.length);
    </script>
    
    <div id="ById">
    TEST
    </div>
    <script>
    var MyElement=document.getElementById("ById");
    alert(MyElement.innerHTML);
    </script>

      上面那个是全文档搜索的,还有几个东西parentNode、firstChild以及lastChild这几个属性可以短距离的检索。

    View Code
    <table>
      <tr>
        <td>John</td>
        <td>Doe</td>
        <td>Alaska</td>
      </tr>
    </table>

      对上面的HTML代码来说,第一个td就是tr的firstChild,最后一个td是lastChild,每一个tr都是td的parentNode。

      接下来是操作节点:

      创建节点并加入HTML中就是用createElement(),createTextNode(),appendChild()这几个方法:

    View Code
    <body>
    <p>p1</p>
    <p>p2</p>
    <p>p3</p>
    <script type="text/javascript">
    var P=document.createElement("p");
    var text=document.createTextNode("p4");
    P.appendChild(text);
    document.body.appendChild(P);
    </script>
    </body>

      有创建就有乱七八糟的什么删除,替换,插入分别对应removeChild(),replaceChild()和insertBefore()这几个方法,用法和创建是差不多的。懒人表示就不写了。

      貌似还有一个createDocumentFragment()这个东西是通过建立一个文档碎片节点(var P=document.createDocumentFragment()),再将要添加的新节点附加在此碎片节点上(P.appendChild(一堆节点)),然后一次性添加到document中(document.body.appendChild(P))。这样就可以避免重复的调用。

      上面都是一些DOM的基础,里面还有很多东西可以深入,下次继续再学。

      

  • 相关阅读:
    Autofac小例子
    Spring自带mock测试Controller
    [转载]转Java 几个memcached 连接客户端对比 选择
    danga的MemcachedClient的几个缺陷
    linux查看memcached状态
    Linux下配置安装PHP环境(Apache2)
    使用memcache.php监控memcached
    memcached运行情况监测
    memcached监控的几种方法(nagios等)
    xmemcached使用的几点优化建议
  • 原文地址:https://www.cnblogs.com/socialdk/p/3010550.html
Copyright © 2011-2022 走看看