zoukankan      html  css  js  c++  java
  • DOM-Document对象

     一. 整体介绍

        这里介绍DOM对象中的Document对象。

      何为Document对象?每个载入浏览器的HTML文档都会成为Document对象,Document对象可以帮助我们对所有的HTML文档进行访问。

      任何一个对象都会有属性和方法,当然Document对象也不例外,Document对象有对象集合、对象属性、对象方法,但对象集和对象属性用的相对不是很多,这里不过多介绍(感兴趣的话可以查阅

    W3C:http://www.w3school.com.cn/jsref/dom_obj_document.asp),主要介绍Document对象的方法。

    二. 详细介绍

      Document对象的方法包括:

        最重要的三个查找方法:getElementById()、getElementsByClassName()、getElementsByTagName() ; 分别是根据id、类名、标签名来查找。

               其他方法:open() 、close() 、write() 、writeIn() 。

      1. getElementById()

         根据元素的id来获取该元素对象,通过该方法获取的元素对象是唯一的,可以直接对其进行操作。

        2. getElementsByClassName()

         根据元素的class类名来获取该元素对象,通过该方法获取的元素对象是一个伪数组,需要通过伪数组的方式对其进行访问。

        3. getElementsByTagName()

         根据元素的标签名来获取该元素对象,通过该方法获取的元素对象是一个伪数组,需要通过伪数组的方式对其进行访问。

       补充:什么是伪数组?伪数组和数组有什么区别?

      伪数组是只有数组的部分功能(下标的调用和length属性),但是却不能调用数组中的方法(eg: pop()、push()、unshift())。

           常见的伪数组有:A:arguments集合(后续介绍Function对象时介绍)

                B:DOM集合(getElementsByClassName和getElementsByTagName)

                                      C:JQuery框架本身就是一个伪数组

          下面通过代码来详细分析一下伪数组的用法,以及伪数组和真数组如何转换

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6         <style type="text/css">
     7             div {
     8                 width: 50px;
     9                 height: 50px;
    10                 border: 1px solid black;
    11             }
    12         </style>
    13         <script type="text/javascript">
    14             window.onload = function() {
    15                 /* 伪数组:只有数组的部分功能(length和下标),无法访问数组对象中的方法
    16                       常见的伪数组有:
    17                       1. arguments
    18                       2. Dom集合    : document.getElementsByClassName()
    19                                   document.getElementsByTagName()
    20                       3. JQuery框架本身就是一个伪数组
    21                  * */
    22 
    23                 //1. 运用
    24                 var divs = document.getElementsByTagName('div');
    25                 //下面这句话报错
    26                 //因为divs是一个伪数组,不能调用数组的pop方法
    27                 //divs.pop().style.backgroundColor = "yellow";
    28 
    29                 //核心知识点:将伪数组转换成真数组
    30                 //Array.prototype.slice.call("伪数组名");        
    31                 var realdivs = Array.prototype.slice.call(divs);
    32                 realdivs.pop().style.backgroundColor = "pink";
    33 
    34                 //2. 自定义伪数组
    35                 var firstDivs = { 0: 'name', 1: 'maru' ,length:2};
    36                 console.log(firstDivs);
    37                 console.log(Array.prototype.slice.call(firstDivs));
    38             };
    39         </script>
    40     </head>
    41 
    42     <body>
    43         <div>1</div>
    44         <div>2</div>
    45         <div>3</div>
    46         <div>4</div>
    47     </body>
    48 
    49 </html>
    View Code

      下面通过代码继续介绍以上三个方法的具体使用:

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6         <script type="text/javascript">
     7             window.onload = function() {
     8                 //1.getElementById()
     9                 document.getElementById("btn1").onclick = function() {
    10                     var obj = document.getElementById("btn1");
    11                     console.log(obj);
    12                 };
    13                 //2.getElementsByClassName()
    14                 document.getElementById("btn2").onclick = function() {
    15                     var obj = document.getElementsByClassName("box1");
    16                     console.log(obj);
    17                     //调用伪数组
    18                     console.log('个数为:' + obj.length);
    19                     for(var i = 0; i < obj.length; i++) {
    20                         console.log('逐个输出:' + obj[i]);
    21                     }
    22                     //转换成真数组
    23                     console.log(Array.prototype.slice.call(obj));
    24                 };
    25                 //3.getElementsByTagName()
    26                 document.getElementById("btn3").onclick = function() {
    27                     var obj = document.getElementsByTagName("div");
    28                     console.log(obj);
    29                     //调用伪数组
    30                     console.log('个数为:' + obj.length);
    31                     for(var i = 0; i < obj.length; i++) {
    32                         console.log('逐个输出:' + obj[i]);
    33                     }
    34                     //转换成真数组
    35                     console.log(Array.prototype.slice.call(obj));
    36                 };
    37             };
    38         </script>
    39     </head>
    40     <body>
    41         <button id="btn1">getElementById</button>
    42         <button id="btn2">getElementsByClassName</button>
    43         <button id="btn3">getElementsByTagName</button>
    44         <div id="123">
    45         </div>
    46         <div id="div1">
    47             <div class="box1">
    48                 <div class="box1">
    49                 </div>
    50             </div>
    51         </div>
    52         <div class="box1">
    53         </div>
    54     </body>
    55 </html>
    View Code

      结论:

       

       4. open()-close()

           打开一个新文档,并擦出当前文档的内容,新文档用 write() 方法或 writeln() 方法编写,但必须要用close()方法关闭该文档,迫使其内容显示出来。

       注意:一旦调用了 close(),就不应该再次调用 write(),因为这会隐式地调用 open() 来擦除当前文档并开始一个新的文档。

      5. write()-writeIn()

          向文档写 HTML 表达式 或 JavaScript 代码,但是write不换行,writeIn换行     

    1 var newDoc = document.open("text/html", "replace");
    2                     var txt = "<html><body>Learning about the DOM is FUN!</body></html>";
    3                     newDoc.write(txt);
    4                     newDoc.write(txt);
    5                     //write不换行,writeIn换行
    6                     newDoc.writeln(txt);
    7                     newDoc.writeln(txt);
    8                     newDoc.close();
    View Code

         

  • 相关阅读:
    MFC框架程序实现十一
    MFC框架程序实现八
    MFC框架程序实现十二
    在Visual C++中如何利用UDL文件来建立ADO连接
    OnePage收集 HA
    微博跳转的url HA
    淘宝iosapp调用规范 HA
    Excel操作相关 HA
    C#GDI+编程基础 HA
    html5deoms HA
  • 原文地址:https://www.cnblogs.com/yaopengfei/p/6503209.html
Copyright © 2011-2022 走看看