• day54 DOM补充练习 jQuery基本选择器


    上节回顾:

    day54
    
    1. 前情回顾
    
            1. DOM对象和BOM对象
                1. BOM 对象 --> window
                    location
                        location.href    
                        location.href="https://www.sogo.com"
                        location.reload
                    history
                    navigator
                2. DOM
                    1. document结构
                        1. 节点
                            1. 文档节点
                            2. 元素节点
                            3. 属性节点
                            4. 文本节点
                        2. 查找标签
                            1. 基本查找
                                1. ID查找 --> docuemnt.getElementById
                                2. 标签名查找 --> document.getElementsByTagName
                                3. class名查找 --> document.getElementsByClassName
                                // 4. 属性查找    --> document.getElementsByName
                            2. 层级查找
                                1. 上一级父标签 --> eleObj.parentElement
                                2. 儿子标签     --> eleObj.children
                                3. 第一个儿子   --> eleObj.firstElementChild
                                4. 最后一个儿子 --> eleObj.lastElementChild
                                5. 上一个兄弟标签 --> eleObj.previousElementSibling
                                5. 下一个兄弟标签  --> eleObj.nextElementSibling
                                
                        3. 创建标签
                            1. doucument.creatElement("div")  --> 要创建什么标签括号里面就写什么
                            2. 设置标签内容
                                1. eleObj.innerHTML = "<p>P标签</p>"
                                2. eleObj.innerText = "标签中间的文本"
                        
                            3. 标签属性
                                1. input标签相关
                                    1. inputEle.value  --> 获取input框的输入值
                                    2. inputEle.value = "请输入xxx" --> 设置input框的值
                                2. checkbox标签相关
                                    1. checkboxEle.checked --> 返回true或false
                                    2. checkboxEle.checked = true  --> 选中该checkbox
                                3. select标签相关
                                    1. selectObj.options  --> 获取所有的option选项 (数组)
                                    2. selecObj.selectedIndex  --> 获取选中的option的索引值
                                    3. selecObj.options.length=0 --> 快速清空option
            
            2. JS 事件
                常用事件
                    onclick
                    ondbclick
                    onload
                    blur
                    fouces
                    onchange (select联动示例)
                绑定事件方法
                    1. 在标签上通过特定的事件属性绑定事件
                        比如: <div onclick="f()">点我点我点我</div> 
                    2. 通过JS绑定事件
                        eleObj.onclick = function(){ ... }
                    3. 事件委托(利用事件冒泡)
                        找到父标签,给子标签绑定事件
                        <ul>li*100</ul>
                        
                        ulEle.onclick=function(){
                            event.target  --> 点击的那个标签对象
                            alert(event.target.innerText)
                        }
                        
        补充知识点
            1. 定时器示例
            2. addEventListener
    上节回顾课堂笔记

    今日内容:

    2. 今日内容
    
        补充经验:
            1. 项目不要一开始就规划十分完美,要从最基本的功能开始写起,然后逐渐丰富
            2. 与同事沟通以正式邮件为主
            3. 项目时间要给自己留有富余
            
            4. CDN是什么?
    
        1. jQuery是什么    --> 写项目都用这个
        
            2. jQuery短小精悍
            write less,do more
            
            是一个别人写好的类库(模块),我们直接在页面上引用这个类库(模块),就可以直接使用类库里面定义好的方法
            
        2. jQuery怎么用
            1. 引用jQuery文件
                两种方式:
                1. 本地文件
                    <script src="jquery-3.2.1.min.js"></script>
                    <script>按照jQuery的规则写代码</script>
                2. CDN方式
                    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
                    <script>按照jQuery的规则写代码</script>
            2. jQuery版本
                3.x
                
                jQuery.js
                jQuery.min.js
        3. jQuery使用
        
            1. 查找标签
                军规:$("这里面写条件")  $后面没有空格
                    
                1. 基本查找
                    1. ID查找
                    $("#id值")
                    2. class名找
                    $(".class名")
                    
                    3. 标签名找
                    $("标签名")
                    
                    4. :has
            
            2. 修改标签的样式
                原生JS:
                    获取样式类: classList
                    添加样式类名 classList.add(.cls)
                    移除样式类名 classList.remove(.cls)
                JQuery版:
                    获取样式类
                    添加样式类名
                    移除样式类名
            
            3. 修改标签
            
            4. 创建标签/添加标签/删除标签
            
            5. 事件
            
            6. 动画
            
            7. 插件
            
            8.Ajax
    今日内容
    3. 今日作业
    
        1. 上午的DOM补充的两个例子
            1. 定时器 (全局变量)
            2. addEventListener (绑定多个事件)
            
        2. 课上练习题(做完)
        
        3. 左侧菜单改成使用jQuery找标签的方式
        
        4. 五点检查抽屉作业
                
    今日作业

    作业讲解:

    1.

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>作业分解大礼包</title>
        <style>
            .cover {
                position: fixed;
                top: 0;
                right: 0;
                bottom: 0;
                left: 0;
                background-color: rgba(0, 0, 0, 0.3);
                z-index: 999;
            }
    
            .modal {
                position: fixed;
                top: 50%;
                left: 50%;
                 600px;
                height: 400px;
                margin-left: -300px;
                margin-top: -200px;
                z-index: 1000;
                background-color: white;
            }
            .hide {
                display: none;
            }
        </style>
    </head>
    <body>
    
    <input type="button" id="b1" value="添加">
    
    <table border="1" id="t1">
        <thead>
        <tr>
            <th>#</th>
            <th>姓名</th>
            <th>爱好</th>
            <th>操作</th>
        </tr>
        </thead>
        <tbody>
         <tr>
            <td>1</td>
            <td>Egon</td>
            <td>杠娘</td>
            <td>
                <input type="button" value="编辑">
                <input class="delete" type="button" value="删除">
            </td>
        </tr>
        <tr>
            <td>2</td>
            <td>Alex</td>
            <td>吹牛逼</td>
            <td>
                <input type="button" value="编辑">
                <input class="delete" type="button" value="删除">
            </td>
        </tr>
        <tr>
            <td>3</td>
            <td>Yuan</td>
            <td>日天</td>
            <td>
                <input type="button" value="编辑">
                <input class="delete" type="button" value="删除">
            </td>
        </tr>
        </tbody>
    </table>
    
    
    <div class="cover hide c1"></div>
    <div class="modal hide c1">
        <p>姓名<input type="text" id="modal-name"></p>
        <p>爱好<input type="text" id="modal-hobby"></p>
    
        <input type="button" value="提交" id="modal-submit">
        <input type="button" value="取消" id="modal-cancel">
    </div>
    
    <script>
        // 显示模态框
        function showModal() {
            // 找到那两个div
            var c1Eles = document.getElementsByClassName("c1");
            for (var i=0;i<c1Eles.length;i++) {
                c1Eles[i].classList.remove("hide");
            }
        }
    
        // 隐藏模态框
        function hideModal() {
            // 找到那两个div
            var c1Eles = document.getElementsByClassName("c1");
            for (var i=0;i<c1Eles.length;i++) {
                c1Eles[i].classList.add("hide");
            }
        }
    
        // 找到添加按钮绑定事件
        var b1Ele = document.getElementById("b1");
        b1Ele.onclick=function () {
            showModal();
        };
    
        // 找到取消按钮
        var cancelEle = document.getElementById("modal-cancel");
        cancelEle.onclick=function () {
            //  点击取消按钮要做的事儿
            // 添加hide class
            hideModal();
        };
    
        //  找modal中的提交按钮,绑定事件
        var submitEle = document.getElementById("modal-submit");
        submitEle.onclick=function () {
            // 模态框里点击提交按钮要做的事儿
            // 1. 取到input筐的值
            var nameInput = document.getElementById("modal-name");
            var hobbyInput = document.getElementById("modal-hobby");
    
            var name = nameInput.value;
            var hobby = hobbyInput.value;
    
            // 2. 创建tr标签
            var trEle = document.createElement("tr");
            // 序号
            var tableEle = document.getElementById("t1");
            var number = tableEle.getElementsByTagName("tr").length;
    
    
            // 拼接tr的内容
            trEle.innerHTML = "<td>" + number + "</td>" + "<td>" + name + "</td>" + "<td>" + hobby + "</td>" + '<td><input type="button" value="编辑"> <input class="delete" type="button" value="删除"></td>'
    
            // 3. 添加到tbody里
            var tbodyEle = tableEle.getElementsByTagName("tbody")[0];
            tbodyEle.appendChild(trEle);
            // 4. 隐藏modal
            hideModal();
        };
            // 删除按钮绑定事件
            // 1. 找标签
            var tableEle = document.getElementById("t1");
            tableEle.onclick=function () {
                // 删除按钮
                var currentEle = event.target;
                if (currentEle.classList.contains("delete")) {
                    // 执行删除操作
                    var currentTr = currentEle.parentElement.parentElement;
                    var tbodyEle = tableEle.getElementsByTagName("tbody")[0];
                    tbodyEle.removeChild(currentTr);
                    // ID重排
                }
            }
    </script>
    </body>
    表格的增删

    2.

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>定时器示例</title>
    </head>
    <body>
    
    <input type="text" id="i1">
    
    <input type="button" value="开始" onclick="start();">
    <input type="button" value="结束" onclick="end();">
    
    <script>
        var t;   // undefined
       function f() {
            var dateObj = new Date();
        //  获取i1标签
        var i1Ele = document.getElementById("i1");
        i1Ele.value=dateObj.toLocaleString();
       }
        // 每隔一秒就执行一次f()
        function start() {
           f();
           // 只创建一个定时器,有定时器的话我就不创建了
            if (t === undefined) {
                t = setInterval(f, 1000);
            }
        }
    
        // 停止计时
        function end() {
            clearInterval(t);
            // t现在是什么?
            console.log("---> ", t)
            t = undefined;
        }
    
    </script>
    </body>
    </html>
    定时器示例

    3.

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="x-ua-compatible" content="IE=edge">
        <title>绑定多个事件</title>
    </head>
    <body>
    <input type="button" value="点我" id="il">
    <script>
        function f1() {
            console.log(1);
        }
        function f2() {
            consol.log(2)
        }
        var ilEle =document.getElementById("il");
    //    ilEle.onclick=function () {
    //        //点我之后要执行的函数
    //        f1();
    //    };
    //    ilEle.onclick=function () {
    //        f2();
    //    };
    //    addEventListener,绑定多个事件不覆盖
        ilEle.addEventListener("click",f1);
        ilEle.addEventListener("click",f2);
    </script>
    </body>
    </html>
    绑定多个事件

     

    上节补充:

    新内容:

    jQuery

     1、jQuery对象

    jQuery对象就是通过jQuery包装DOM对象后产生的对象。jQuery对象是 jQuery独有的。如果一个对象是 jQuery对象,那么它就可以使用jQuery里的方法:例如$(“#i1”).html()。
    
    $("#i1").html()的意思是:获取id值为 i1的元素的html代码。其中 html()是jQuery里的方法。
    
    相当于: document.getElementById("i1").innerHTML;
    
    虽然 jQuery对象是包装 DOM对象后产生的,但是 jQuery对象无法使用 DOM对象的任何方法,同理 DOM对象也没不能使用 jQuery里的方法。
    
    一个约定,我们在声明一个jQuery对象变量的时候在变量名前面加上$:
    View Code

    一个约定,我们在声明一个jQuery对象变量的时候在变量名前面加上$:

    var $variable = jQuery对像
    var variable = DOM对象
    $variable[0]//jQuery对象转成DOM对象

     拿上面那个例子举例,jQuery对象和DOM对象的使用:

    $("#i1").html();//jQuery对象可以使用jQuery的方法
    $("#i1")[0].innerHTML;// DOM对象使用DOM的方法

     

     

    jQuery基础语法

    $(selector).action()

    查找标签

    选择器

    id选择器:

    $("#id")

    标签选择器:

    $("tagName")

    class选择器:

    $(".className")

    配合使用:

    $("div.c1")  // 找到有c1 class类的div标签

    所有元素选择器:

    $("*")

    组合选择器:

    $("#id, .className, tagName")

    层级选择器:

    x和y可以为任意选择器

    $("x y");// x的所有后代y(子子孙孙)
    $("x > y");// x的所有儿子y(儿子)
    $("x + y")// 找到所有紧挨在x后面的y
    $("x ~ y")// x之后所有的兄弟y 
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>jQuery引出</title>
    </head>
    <body>
    
    
    <p>我是前面的p标签</p>
    <div id="i1">我是id为i1的div标签</div>
    <script src="jquery-3.2.1.min.js"></script>
    <!--<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>-->
    </body>
    </html>
    小练习 jQuery

    基本筛选器:

    复制代码
    :first // 第一个
    :last // 最后一个
    :eq(index)// 索引等于index的那个元素
    :even // 匹配所有索引值为偶数的元素,从 0 开始计数
    :odd // 匹配所有索引值为奇数的元素,从 0 开始计数
    :gt(index)// 匹配所有大于给定索引值的元素
    :lt(index)// 匹配所有小于给定索引值的元素
    :not(元素选择器)// 移除所有满足not条件的标签
    :has(元素选择器)// 选取所有包含一个或多个标签在其内的标签(指的是从后代元素找)
    复制代码

    例子:

    $("div:has(h1)")// 找到所有后代中有h1标签的div标签
    $("div:has(.c1)")// 找到所有后代中有c1样式类的div标签
    $("li:not(.c1)")// 找到所有不包含c1 class的li标签
    $("li:not(:has(a))")// 找到所有后代中不含a标签的li标签

    注意:

    1. 这里的hasnot不是简单的 有和 没有的意思,它俩没啥关系(不是一组)
    2. :not:has通常用.not().has()代替。
    3. $("div:has(.c1)")中的:has(.c1)等价于$("div .c1"),也就是找后代里面有c1的div标签。

    练习:

    自定义模态框,使用jQuery实现弹出和隐藏功能。

     jQuery版自定义模态框
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="x-ua-compatible" content="IE=edge">
        <title>基本选择器</title>
    </head>
    <body>
    <div id="il">id值为il</div>
    <div class="c1">c1</div>
    <div class="c1">c1</div>
    
    <p>p</p>
    <p>p2</p>
    
    <script src="jquery-3.2.1.min.js"></script>
    </body>
    基本选择器文档
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="x-ua-compatible" content="IE=edge">
        <title>7 jQuery 层级选择器</title>
    </head>
    <body>
    <div id="d1" class="c1 c2 c3">
        <p>d1的儿子p</p>
        <div id="d2">
            <p>d1的孙子p 0</p>
            <p>d1的孙子p 1</p>
            <p>d1的孙子p 2</p>
            <p>d1的孙子p 3</p>
            <p>d1的孙子p 4</p>
        </div>
    </div>
    <input type="text" value="我是前面的">
    <label for="il">姓名</label>
    
    <input type="text" id="il">
    <input type="text" value="111">
    
    <input type="button" value="点我">
    
    <label for="i2" id="11">爱好
        <input type="text" id="i2">
        <div>
            <input type="text">
        </div>
        <span class="s1"><i>1</i>span 0</span>
        <span>span1</span>
    </label>
    
    <script src="jquery-3.2.1.min.js"></script>
    </body>
    </html>
    层级选择器文档

    作业练习:

     

     

  • 相关阅读:
    C语言与汇编的嵌入式编程:统计字符串中各字符出现的次数
    一个汇编小demo
    C语言与汇编的嵌入式编程:求100以内素数
    TCP网络调试助手上提示错误:“1035 未知错误”的有效解决方法,本人实测确实可行
    一个支持国密SM2/SM3/SM4/SM9/ZUC/SSL的密码工具箱
    DRM(device resource management)介绍
    TODO
    pinctrl(1)——pinctrl子系统的使用
    GPIO使用总结
    Gerrit使用技巧
  • 原文地址:https://www.cnblogs.com/number1994/p/8398662.html
Copyright © 2020-2023  润新知