• DOM操作学习


    一、DOM对象-查找元素

    # 1.直接查找
    # 获取标签对象的方式:
    document.getElementById('#id')  #根据ID获取一个标签(获取的是单独的对象)
    document.getElementsByClass('.class') # 获取的是列表  列表中套对象
    document.getElementsByName     # 根据name属性获取标签集合
    document.getElementsByClassName  # 根据class属性获取标签集合
    document.getElementsByTagName   # 根据标签名获取标签集合(获取的是列表  列表中套对象)
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div id="i1">hellozekai</div>
    <div class="c1">helloc1</div>
    <div class="c1">helloc2</div>
    <input type="checkbox" name="hobby" id="myhobby" >足球
    </body>
    </html>
    
    # 根据标签获取标签集合
    >var obj=document.getElementsByTagName("div");
    >obj
    # 结果:
    [div#i1, div.c1, div.c1, i1: div#i1]
    # 根据id获取标签
    >var s = document.getElementById("myhobby");
    >s
    # 结果
    <input type="checkbox" name="hobby" id="myhobby">

     案例:表格的全选、反选和取消

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <input type="button" value="全选" onclick="selectAll()">
    <input type="button" value="取消" onclick="cancelAll()">
    <input type="button" value="反选" onclick="reverseAll()">
    <!--简易写法:table>thead>tr>th然后按table键就会自动补齐格式-->
    <table border="1px">
        <thead>
        <tr>
            <th>id</th>
            <th>ip</th>
            <th>操作</th>
        </tr>
        </thead>
        <tbody>
            <tr>
                <td>1</td>
                <td>192.168.11.21</td>
                <td>
                    <input type="checkbox" class="mycheck">
                </td>
            </tr>
            <tr>
                <td>2</td>
                <td>192.168.11.22</td>
                <td>
                    <input type="checkbox" class="mycheck">
                </td>
            </tr>
            <tr>
                <td>3</td>
                <td>192.168.11.23</td>
                <td>
                    <input type="checkbox" class="mycheck">
                </td>
            </tr>
        </tbody>
    </table>
    
    </body>
    <script>
        function selectAll(){
             // 1. 获取所有的复选框 列表形式返回
             var arr = document.getElementsByClassName('mycheck');
             //  2. 循环列表, 获取对象
             for (var i=0; i<arr.length; i++){
                 // console.log(chks[i]);
                 //  3. 设置对象的checked属性
                arr[i].checked = true;
             }
        }
    
        function cancelAll(){
            // 1. 获取所有的复选框 列表形式返回
             var arr = document.getElementsByClassName('mycheck');
             //  2. 循环列表, 获取对象
             for (var i=0; i<arr.length; i++){
                 // console.log(chks[i]);
                 //  3. 设置对象的checked属性
                arr[i].checked = false;
             }
        }
    
        function reverseAll(){
            // 1. 获取所有的复选框 列表形式返回
             var arr = document.getElementsByClassName('mycheck');
    
             //  2. 循环列表, 获取对象
             for (var i=0; i<arr.length; i++){
    
                 if(arr[i].checked){
                     arr[i].checked = false;
                 }else{
                     arr[i].checked = true;
                 }
             }
        }
    </script>
    </html>
    View Code

    二、DOM对象-操作属性

    1.操作内容:

    # 操作内容
    innerText   文本
    innerHTML    HTML内容
    value      值
    
    # 操作属性
    attributes           获取所有标签属性
    setAttribute(key,value)    设置标签属性
    getAttribute(key)        获取指定标签属性
    removeAttribute(key)      删除属性
    <div id="i1" clasid = 'sss'>这个是内容</div>
    <input type="text" value="dbshabdsabda" id="i2">
    <input type="button" value="发送" id="btn">
    
    # 操作标签对象的内容
    # 查看
    >var obj = document.getElementById("i1");
    >obj
    <div id="i1" clasid = 'sss'>这个是内容</div>
    
    # 获取内容
    >obj.innerText
    这个是内容
    
    # 设置内容
    >obj.innerText="xxxx"
    xxxx
    >obj.innerHTML= '<a href="www.baidu.com">设置的内容</a>';
    <a href="www.baidu.com">设置的内容</a>
    # innerHTML可以看到设置的内容变成了可以跳转的链接
    
    # 也可以设置value的值
    >var obj2 = document.getElementById("i2");
    >obj2.value = "ccccc"
    >obj2.value
    ccccc
    # 属性操作
    <div id="i1" clasid = 'sss'>这个是内容</div>
    <input type="button" value="发送" id="btn">
    
    obj = document.getElementById("i1")
    # 获取属性
    >obj.attributes
    {0: id, 1: clasid, id: id, clasid: clasid, length: 2}
    
    # 获取单个属性值
    >obj.getAttribute('id')
    i1
    # 设置增加属性值
    >obj.setAttribute('k2','v2')
    >obj
    <div id="i1" clasid = 'sss' k2="v2">这个是内容</div>
    
    # 删除属性值
    >obj.removeAttribute('k2')
    >obj
    <div id="i1" clasid = 'sss'>这个是内容</div>
    
    # 设置按钮不能点击
    >obj = document.getElementById('btn')
    >obj2.setAttribute('disabled','true');
    >obj
    # 可以看到发送按钮变为灰色
    <input type="button" value="发送" id="btn" disabled="true">

    时间函数

    // 在特定的时间内, 执行函数
    // setInterval()  ### crontab
    // setInterval("test()", 1000);  # 每隔1s执行一次
    // setTimout()  ## 只执行一次结束  ## at
    //setTimeout("test()", 1000);

    案例:验证码倒计时

    # 验证码倒计时
    # 分析:点击按钮后,按钮显示倒计时并变为灰色;记时结束后又变回来
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>验证码倒计时</title>
    </head>
    <body>
    <input type="button" value="发送验证码" id="btn" onclick="sendMsg()">
    </body>
    <script>
        var total_time = 10; //倒计时总是
        var press = document.getElementById("btn");
        function sendMsg() {
            press.setAttribute('disabled','true');
            press.value = "还剩下" + total_time + "";
            setInterval("lesstime()",1000);
        }
    
        function lesstime() {
            if (total_time == 1){
                press.removeAttribute("disabled");
                press.value = "发送验证码";
    
            } else {
                total_time -= 1;
                press.value = "还剩下" + total_time + "";
            }
        }
    </script>
    </html>
    View Code

    2.样式操作

    1.指定类操作
    className         获取所有类名
    classList.remove(cls)   删除指定类
    classList.add(cls)     添加类

    案例1:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .c1{
                background-color: blue;
            }
            .c2{
                border: 1px solid red;
            }
        </style>
    </head>
    <body>
    <div class="c1" >dsabdsnajd;sna</div>
    </body>
    </html>
    
    # 大颗粒度的设置:
    style:
        .c2{
            xxxx
        }
    js:
        d1.classList.add('c2')  : 添加样式
        d1.classList
        d1.classList.remove('c2'): 删除样式
    
    # 细颗粒度的设置:
    对象.style.css的属性 = 值:
    # 两种情况:
    # 1.
    css: 
        color: red;
    DOM:
        obj.style.color = 'red'
    # 2. 
    css:
        font-size: 20px;
        background-position-y 
    DOM:
        obj.style.fontSize = "20px"
    View Code

    案例2:模态框练习

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .shadow{
                position: absolute;
                top: 0;
                left: 0;
                bottom: 0;
                right: 0;
                background-color: black;
                opacity: 0.3;
            }
            .content{
                position: absolute;
                top:200px;
                left: 500px;
                 300px;
                height: 200px;
                background-color: white;
            }
            .hide{
                display: none;
            }
        </style>
    </head>
    <body>
    <input type="button" value="添加" onclick="getModal()">
    
    <!--遮罩层-->
    <div class="shadow hide"></div>
    
    <!--模态框-->
    <div class="content hide">
        <form action="">
            用户名:<input type="text" ><br>
            <input type="button" value="提交">
            <input type="button" value="取消" onclick="cancelModal();">
        </form>
    </div>
    </body>
    <script>
        function getModal() {
            document.getElementsByClassName('shadow')[0].classList.remove('hide');
            document.getElementsByClassName('content')[0].classList.remove('hide');
        }
        function cancelModal(){
            document.getElementsByClassName('shadow')[0].classList.add('hide');
            document.getElementsByClassName('content')[0].classList.add('hide');
        }
    </script>
    </html>
    View Code

     三、事件

    1. 常见的事件:焦点

    获得焦点事件——–onfocus
    失去焦点事件——–onblur
    内容改变事件——–onchange
    载入页面———–onload
    单击事件———–onclick
    鼠标移入事件——–onmouseover
    鼠标移出事件——–onmouseout

    案例:onchange 多级菜单联动

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <select name="province" id="province" onchange="ld();">
            <option value="-1">请选择</option>
            <option value="0">北京</option>
            <option value="1">山西</option>
        </select>
        <select name="city" id="city">
        </select>
    </body>
    <script>
        var citys = [
            ["海淀","东城","西城","朝阳"],
            ["太原","大同","运城","晋中"]
        ];
        function ld(){
            var provinces = document.getElementById("province");
            var opts;
            if(provinces.value == -1){
                opts = '';
                document.getElementById("city").innerHTML = opts;
                return;
            }
            var areas = citys[provinces.value];
            for(var i = 0; i < areas.length; i++){
                opts += "<option value='" + i + "'>" + areas[i] + "</option>";
            }
            document.getElementById("city").innerHTML = opts;
        }
    </script>
    </html>
    View Code

     2.事件的绑定方式

    # a.html属性的方式绑定
    <a href='www.baidu.com' onclick="t1();"> 百度 </a>
    
    作为WEB开发人员,这是最早碰到的一种事件绑定方式,这种绑定方式非常古老
    优点:兼容性最强
    缺点也很明显:
    1:需要在DOM渲染时分析绑定语句,影响DOM渲染速度(IE下尤其)
    2:形式上没达到”结构与行为”相分离的原则
    # b.对象属性方式
    var bd = document.getElementById('bd');
    bd.onclick = function(){
        console.log(this.id);
    }
    
    # 这种绑定是把一个DOM对象onclick属性赋值为一个函数,那此时函数内部的this指向的是该DOM对象,即这个a对象
    # 缺点:该方式只能为一种事件,绑定一个回调函数
    即:.onclick = fn1, .onclick=fn2;
    最终的效果是.onclick=fn2 执行
    # c.addEventListener方式(了解)
    var i0 = document.getElementById('i1');
    i0.addEventListener('click', function(){console.log('a');})
    i0.addEventListener('click', function(){console.log('b');})
    
    格式:addEventListener(‘事件’,绑定的函数, true/false);
    1.如果添加了多个事件处理函数,则按添加时的先后顺序来执行
    2.事件处理函数中的this指代的是DOM对象本身(w3c标准)
    3.第一个事件参数,一律把事件名称的“on”去掉
    优点: 能为同一种事件,如onclick,绑定多个函数函数中的this指向该DOM对象,操作方便
    缺点:IE8及以下版本不支持此方法
    

    3.windows常见方法

    window常见方法:
    	alert('1234') # 浏览器弹出消息
    	confirm('是否确定删除?');   #浏览器跳出弹窗询问
    	open(): 打开一个网页
    	location.href = "资源"  ### 跳转到某一个网页
    	location.reload(): 刷新当前页面
    

      

  • 相关阅读:
    iOS macOS拼接字符串
    .NET5控制台程序使用EF连接MYSQL数据库的方法
    redis集群升级
    PostgreSQL(一) 编译安装运行
    bat Windows 批处理脚本编写
    Windows 远程Mac
    js判断是pc或移动端核心代码
    数组拆分,多用于单个数组拆分多个数组,用处swiper里面
    什么是类路径???
    达梦数据库DM8备份时归档日志不连续问题处理
  • 原文地址:https://www.cnblogs.com/yangmeichong/p/11188457.html
Copyright © 2020-2023  润新知