zoukankan      html  css  js  c++  java
  • 10 DOM文档对象模型

    DOM文档对象模型

      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <meta http-equiv="X-U-Compatible" content="IE-edge">
      6     <meta name="viewport" content="width=device-width,initial-scale=1">
      7     <title>DOM文档对象模型</title>
      8     <style type="text/css">
      9         #box{
     10             background-color: #ff6700;
     11         }
     12         .cls{
     13             margin-bottom: 10px;
     14             height: 100px;
     15             width: 200px;
     16             background-color: #ff0000;
     17         }
     18     </style>
     19 </head>
     20 <body>
     21     <div id = 'box'>
     22         <h1>所谓DOM,全称 Docuemnt Object Model 文档对象模型</h1>
     23         <p>HTML加载完毕,渲染引擎会在内存中把HTML文档,生成一个DOM树,getElementById是获取内中DOM上的元素节点。然后操作的时候修改的是该元素的属性。</p>
     24         <h2>在HTML当中,一切都是节点:</h2>
     25         <p>元素节点:HMTL标签。</p>
     26         <p>文本节点:标签中的文字(比如标签之间的空格、换行)</p>
     27         <p>属性节点::标签的属性</p>
     28         <p>整个html文档就是一个文档节点。所有的节点都是Object。</p>
     29     </div>
     30     <div class = 'cls' id = 'box3'><input type="text" placeholder="input...">box3
     31         <div style="height: 50px; 50px;background-color: greenyellow;"></div>
     32     </div>
     33     <div class = 'cls' id = 'box2' onclick=alertMsg()>box2</div>
     34     <div class = 'cls' id = 'box1'>box1</div>
     35     <div>
     36         <select name="" id="">
     37             <option value="">1</option>
     38             <option value="">2</option>
     39             <option value="">3</option>
     40         </select>
     41     </div>
     42 
     43 
     44     <script type="text/javascript">
     45         //  DOM的结构
     46         console.log('document  :  ',document);  // 获取文档对象
     47         console.log('获取html  :  ',document.documentElement);  // 获取html
     48         console.log('获取body  :  ',document.body);  // 获取body
     49         //  获取其它DOM(事件源)的三种方式
     50         var tmp1 = document.getElementById('box');  //方式一:通过id获取单个标签
     51         var tmp2 = document.getElementsByClassName('cls');  //方式三:通过 类名 获得 标签数组,所以有s
     52         var tmp3 = document.getElementsByTagName('p');  //方式二:通过 标签名 获得 标签数组,所以有s
     53         console.log(tmp1);
     54         console.log(tmp2[0]);
     55         console.log(tmp3[2]);
     56 
     57         //  事件三要素  事件源、事件、事件驱动程序
     58         /*
     59             事件源:引发后续事件的html标签。
     60             事件:js已经定义好了 如 onclick onmouseover等
     61             事件驱动程序:对样式和html的操作。也就是DOM。
     62             代码书写步骤如下:
     63             (1)获取事件源:document.getElementById(“box”);
     64             (2)绑定事件: 事件源box.事件onclick = function(){ 事件驱动程序 };
     65             (3)书写事件驱动程序:关于DOM的操作
     66         */
     67         //  直接绑定匿名函数
     68         tmp2[2].onclick = function () {
     69             alert(this.className);
     70         };
     71         //  先单独定义函数,再绑定  绑定的时候,是写fn,不是写fn()
     72         var alertMsg = function () {
     73             alert('hello!')
     74         };
     75         tmp1.onclick = alertMsg;
     76         //  行内绑定 在标签里绑定 如上 id=box2 的div
     77         //  注意绑定时,是写的"fn()",不是写的"fn"
     78 
     79         //  JavaScript入口函数 window.onload()
     80         //  此函数调用,是当页面加载完毕(文档和图片)的时候,触发onload()函数,文档先加载,图片资源后加载
     81         window.onload = function () {
     82             console.log("等页面加载完毕时,打印字符串");
     83         };
     84         /*window.onload()方法存在的问题
     85             1.图片加载完成才调用onload方法,大家想个问题,如果现在用户访问JD商城页面,如果JD商城中的脚本文件在window.onload()方法调用,
     86         如果此时用户网速卡了,然后图片资源加载失败了,此时用户是做不了任何操作的,所以winodw.onload()方法有很大问题。
     87             2.window.onload()方法 如果脚本中书写两个这样的方法,那么会有事件覆盖现象。
     88          */
     89 
     90         // 几个常用的事件
     91         var tmp4 = document.getElementById('box3');
     92         var tmp5 = document.getElementsByTagName('input');
     93         var tmp6= document.getElementsByTagName('select');
     94         var consoleHello = function () {
     95             console.log('hello')
     96         };
     97         tmp4.ondblclick = consoleHello;  // 双击
     98         tmp5[0].onkeyup = consoleHello;   //  按下键并释放的时候触发
     99         tmp5[0].onfocus = consoleHello;  // 鼠标聚焦时触发
    100         tmp5[0].onblur = consoleHello;  // 鼠标失去焦点时触发  可以做一些实时校验
    101         tmp6[0].onchange = consoleHello;  //  这个不能监听input,只能监听select checkbox等
    102         tmp4.onmouseover = consoleHello;  // 鼠标穿透时触发  作用于所有子元素
    103         tmp4.onmouseout = consoleHello;  // 鼠标离开时触发  作用于所有子元素
    104     </script>
    105 </body>
    106 </html>
  • 相关阅读:
    day14(JavaDoc)
    day15(Java流程控制)
    day12
    day.6
    day10
    day11(运算符)
    day.5
    proc -x cshell fork()
    I/O -x 标准IO fopen-fclose--fgetc-fputc--fgets-fputs--fwrite-fread--fprintf-fscanf
    I/O -x open()-read()-write()-close()-lseek()
  • 原文地址:https://www.cnblogs.com/znyyy/p/11095921.html
Copyright © 2011-2022 走看看