Python 复习笔记 dom

JavaScript:
  https://www.cnblogs.com/otome/p/12588542.html

jquery:

  https://www.cnblogs.com/otome/p/12682354.html

Dom(document)
1.查找
  1.直接查找:
    document.getElementById 根据ID获取一个标签
    document.getElementsByName 根据name属性获取标签集合
    document.getElementsByClassName 根据class属性获取标签集合
    document.getElementsByTagName 根据标签名获取标签集合
  2.间接查找:
    通过一个标签找出各种关系的标签:
    节点:(所有内容)

1 parentNode // 父节点
2 childNodes // 所有子节点
3 firstChild // 第一个子节点
4 lastChild // 最后一个子节点
5 nextSibling // 下一个兄弟节点
6 previousSibling // 上一个兄弟节点    

  元素:(被括号括起来的内容)

1 parentElement // 父节点标签元素
2 children // 所有子标签
3 firstElementChild // 第一个子标签元素
4 lastElementChild // 最后一个子标签元素
5 nextElementtSibling // 下一个兄弟标签元素
6 previousElementSibling // 上一个兄弟标签元素

  节点和元素的区别:
    <div>
      111
      <a>1<a>
    </div>
  节点包括111和<a>1<a>,元素只有<a>1<a>

2.操作:
  1.ID
    1.获得标签内容
      1.通过ID查找到标签:t=document.getElementById("")
      2.通过标签得到间接寻找相关节点:t.childNodes、t.parentNode
      3.获得标签的值: t.value
      4.获得标签的文本内容:t.innertext、t.innerHTML(

如:<a>一<span>111</span>二<a>)
t.innertext ————> 一111二
t.innerHTML ————> 一<span>111</span>二

    2.修改标签内容
      t.value = "66"

  2.class
    1.寻找标签,获得标签列表:t=document.getElementsByTagName("div")
    2.切片,对目的对象进行操作:(当然,如果知道ID,就找得更快了)
    t[0].classList、t[0].classList.add('c4')、t[0].classList.remove()
    3.样式
      同理:也可以对标签的其他样式进行修改:
      如t.style.color="red",如果带“-”:像background-color就变成t.style.backgroundColor,"-"后的C变成大写的
    4.属性(<div id='i1' name='haha'>)

      t.getAttribute(name) 获得属性
      t.setAttribute("name","xixi") 修改属性
      t.removeAttribute("name") 移除属性

      可以用来控制选择框的是否选中,即控制checked

PS:当在网页上勾选单选框时,不会在标签中增加 checkde=checked,所以不能通过获取属性来判断,而是直接用
对象.checked == true or false 来改变单选框的是否选中
最后一点,因为两个方法都能改变,所以两种方法要同时兼顾。当然,最好的方法就是统一使用 对象.checked 来改变

  3.标签操作
    1.创建标签
      方法一:创建对象

var tag = document.createElement('a')
tag.innerText = 'haha'
tag.className = 'c1'
tag.href = "http://www.baidu.com"

      方法二:创建字符串
        var tag = "<a class='c1' href='http://www.baidu.com'>haha</a>"
    2.添加标签
      方法一:创建对象
        xx.appendChild(tag)     默认加到该标签里面的最后
        xx.insertBefore(tag,xx.children[1]) 加到指定标签的前面
        xx.insertAdjacentElement("afterBegin",document.createElement('p'))
      方法二:创建字符串
        xx.insertAdjacentHTML("beforeEnd",tag); 当成标签传进去
        xx.insertAdjacentText("beforeEnd",tag); 当成文本传进去
        第一个参数只能是

        “afterBegin”在标签里面的最前面添加,是标签子级;
        “beforeBegin”在标签外面的前面添加,与标签同级;

        “afterEnd”在标签外面的后面添加,与标签同级;
        “beforeEnd”在标签里面的最后面添加,是标签的子级

  4.位置
    1.clientHeight 可见区域:height+padding
    2.clientTop border高度

    3.offsetHeight 可见区域:height+padding+border
    4.offsetTop 距离上级定位标签的高度


    5.scrollHeight 全文高:height+padding
    6.scrollTop 滚动高度

PS:谷歌浏览器使用document.body.scrollTop一直显示0,所以使用document.documentElement.scrollTop
  跟程序开头的<!DOCTYPE html>有关,各浏览器下 scrollTop的差异 原文链接:https://blog.csdn.net/sleepwalker_1992/article/details/80677845
    IE:
      对于没有doctype声明的页面,使用 document.body.scrollTop 或 document.documentElement.scrollTop;
      对于有doctype声明的页面,则使用 document.documentElement.scrollTop;

    Chrome、Firefox:
      对于没有doctype声明的页面,使用 document.body.scrollTop 来获取 scrollTop高度 ;
      对于有doctype声明的页面,则使用 document.documentElement.scrollTop;

    Safari:
      safari 比较特别,有自己获取scrollTop的函数 : window.pageYOffset ;
      所以可以合在一起判断window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft
  5.提交表单
    之前是<input type='submit' value='提交'>来提交当前form的表单
    现在可以用DOM来提交

        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>Title</title>
        </head>
        <body>
            <form id="i1">
                <input type="text">
                <input type="submit"value="提交">
                <a onclick="Submit()">提交</a>
            </form>

            <script>
                function Submit() {
                    var tag=document.getElementById('i1');
                    tag.submit();
                }
            </script>
        </body>
        </html>
提交表单

  6.其他操作:
    1.console.log() 输出框,把括号中的内容输出到网页上
    2.alert() 弹出框
    3.confirm() 确认框,有返回值,为false或true


    //URL和刷新
    4.location.href 获取URL
    5.location.href="URL" 重定向
    6.location.reload() 重新加载


    //定时器:
    7.setInterval 多次定时器
    8.clearInterval
    9.setTimeOut 单次定时器
    10.clearTimeOut

  7.事件的绑定
    特殊事件:
      1.this,指向当前触发事件的标签
      2.全局事件绑定 window.onkeydown=function(){}
      3.event,特殊参数,包含事件相关内容(跟之前的pygame的event差不多)
      4.默认事件
      如:

      (a标签,跳转)(submit标签,提交).....
        如果绑定事件,先执行自定义事件,再执行默认事件
        <input type="submit" value="提交" onclick="return Submit()">
        加上return的话,后面的Submit()函数如果是true就会执行后面的事件,如果是false就不执行
      (checkbox,勾选)..
        如果绑定事件,先执行默认事件,再执行自定义事件

实际操作的一些例子:

1.搜索框

    1.创建输入框
    2.给输入框绑定事件

    3.在script上定义事件的内容

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8   //onfocus表示鼠标的焦点在对话框 onblur鼠标的焦点移出对话框
 9     <input id="i1" type="text" value="请输入内容" onfocus="f1();"onblur="f2();">
10     <script>
11         function f1() {
12           var  t=document.getElementById("i1");
13           var val=t.value
14             if (val=="请输入内容"){t.value=""}
15         }
16          function f2() {
17           var t=document.getElementById("i1");
18           var val=t.value;
19           // 去空格,看字符长度
20             if (val.trim().length==0){t.value="请输入内容"}
21         }
22     </script>
23 </body>
24 </html>
弹出框

2.弹出框

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         body{
 8             margin: 0;
 9         }
10       .bj{
11           height: 2000px;
12           width: 100%;
13           background-color: #9E9EA6;
14       }
15       .hide{
16           display: none;!important;
17       }
18         .shade{
19             position: fixed;
20             top:0;
21             bottom: 0;
22             left: 0;
23             right: 0;
24             background-color: #5ab2ce;
25             z-index: 100;
26         }
27         .modal{
28             width: 400px;
29             height: 400px;
30             position: fixed;
31             background-color: white;
32             top: 50%;
33             left: 50%;
34             margin-top:-200px ;
35             margin-left: -200px;
36             z-index: 101;
37         }
38     </style>
39 </head>
40 <body>
41     <div class="bj">
42         <input type="button" value="点我" onclick="f1()">
43         <div id="shade" class="shade hide"></div>
44         <div id="modal" class="modal hide">
45             <a href="javascript:void(0);"onclick="f2()">取消</a>
46         </div>
47     </div>
48     <script>
49         function f1() {
50             var t1 = document.getElementById("shade");
51             var t2 = document.getElementById("modal");
52             t1.classList.remove("hide");
53             t2.classList.remove("hide");
54         }
55         function f2() {
56             var t1 = document.getElementById("shade");
57             var t2 = document.getElementById("modal");
58             t1.classList.add("hide");
59             t2.classList.add("hide");
60         }
61     </script>
62 </body>
63 </html>
弹出框

3.点赞(绑定事件)

1.this,指向当前触发事件的标签, function(this),可以传入这个标签
2.setInterval(匿名函数,时间单位ms) 创建定时器,会返回一个值,inter=setInterval()
3.clearInterval删除定时器,传入创建时返回的值,clearInterval(inter)
4.removeChild删除子标签

 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .item{
 8             padding: 50px;
 9             position: relative;
10         }
11         .item span{
12             position: absolute;
13             top: 42px;
14             left: 83px;
15             opacity: 1;
16         }
17     </style>
18 </head>
19 <body>
20     <div class="item">
21         <a onclick="f1(this)">赞!</a>
22     </div>
23     <div class="item">
24         <a onclick="f1(this)">赞!</a>
25     </div>
26     <div class="item">
27         <a onclick="f1(this)">赞!</a>
28     </div>
29     <div class="item">
30         <a onclick="f1(this)">赞!</a>
31     </div>
32     <script>
33         function f1(ths) {
34             var top=42;
35             var left=83;
36             var op=1;
37             var fontSize=18;
38             var tag = document.createElement('span');
39             tag.innerText='+1';
40             tag.style.top=top+'px';
41             tag.style.left=left+'px';
42             tag.style.fontSize=fontSize+'px';
43             tag.style.opacity=op;
44             ths.parentElement.appendChild(tag);
45 
46             var inter=setInterval(function ()
47                 {
48                 top-=10;
49                 left+=10;
50                 op-=0.1;
51                 fontSize+=5;
52                 tag.style.top=top+'px';
53                 tag.style.left=left+'px';
54                 tag.style.fontSize=fontSize+'px';
55                 tag.style.opacity=op;
56                 if (op<=0.2){
57                     clearInterval(inter);
58                     ths.parentElement.removeChild(tag)
59                              }
60                 }
61             ,50)
62         }
63     </script>
64 </body>
65 </html>
66 
67 点赞例子
点赞(绑定事件)

 

posted @ 2020-05-12 14:55  otome  阅读(183)  评论(0编辑  收藏  举报