2023-03-14_DOMDay02-排它思想开关思想以及鼠标键盘事件

1. 操作多个元素的内容

<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="UTF-8" />
        <title>02_排他思想-点击第一个li标签,然后将所有的li标签的内容修改为哈哈</title>
    </head>
    <body>
        <ul>
            <li>斗罗大陆</li>
            <li>斗破苍穹</li>
            <li>坏蛋是怎样练成</li>
            <li>上门龙婿</li>
        </ul>

        <script>
            // 1.获取所有的li
            // 2.从所有的li中找到第一个li
            // 3.点击第一个li
            // 4.将所有的li的内容修改为哈哈

            // 1.获取所有的li
            var li_list = document.querySelectorAll('ul li');

            // 2.从所有的li中找到第一个li
            // 3.点击第一个li
            li_list[0].onclick = function(){
                // 4.将所有的li的内容修改为哈哈
                //    a.遍历所有的li
                //    b.拿到li中间的内容
                //    c.修改
                for(var i = 0; i < li_list.length; i++){
                    li_list[i].innerHTML = '哈哈';
                }
            }

// 排他思想-点击任意一个li标签,然后将所有的li标签的内容修改为哈哈
for (var i = 0; i < li_list.length; i++) {
    li_list[i].onclick = function () {
         for (var j = 0; j < li_list.length; j++) {
             li_list[j].innerHTML = '哈哈'
         }
    }
}

// 排他思想-方法1-点击任意一个li-将当前点击的li修改为哈哈-其他li修改嘿嘿
for (var i = 0; i < liList.length; i++) {
    liList[i].onclick = function() {
        for(var j = 0; j < liList.length; j++) {
            liList[j].innerHTML = '嘿嘿'
        }
        this.innerHTML = '哈哈'
    }
}

// 排他思想-方法2-点击任意一个li-将当前点击的li修改为哈哈-其他li修改嘿嘿
for (var i = 0; i < liList.length; i++) {
    // 给li对象上添加一个属性  属性的名字叫做index
    // 属性的值是i
    liList[i].index = i;

    liList[i].onclick = function() {
        for(var j = 0; j < liList.length; j++) {
            liList[j].innerHTML = '嘿嘿'
        }
        liList[this.index].innerHTML = '哈哈'
    }
}
        </script>
    </body>
</html>

排它思想:

1. 先让所有的元素处于同样的状态

2. 再让那个特殊的自己改变

  • 案例练习---排它思想-轮播小圆点切换
<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="UTF-8" />
        <title>07_排他思想-轮播小圆点切换</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }

            ul li {
                list-style: none;
            }

            .uu::after {
                content: '';
                display: block;
                clear: both;
            }

            .uu li {
                width: 40px;
                height: 40px;
                background-color: gainsboro;
                border-radius: 50%;
                float: left;
                margin-right: 10px;
            }

            li.current {
                background-color: greenyellow;
            }
        </style>
    </head>
    <body>
        <ul class="uu">
            <li class="current"></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>

        <script>
            var li_list = document.querySelectorAll('.uu li');

            for(var i = 0; i < li_list.length; i++){
                li_list[i].onclick = function(){
                    for(var j = 0; j < li_list.length; j++){
                        li_list[j].style.backgroundColor = 'gainsboro';
                    }

                    this.style.backgroundColor = 'yellowgreen';
                }
            }
        </script>
    </body>
</html>

2. 鼠标事件

  • onclick // 点击
  • ondblclick //双击
  • oncontextmenu //右击
  • onmousemove // 鼠标移动
  • onmouseover/onmouseout // 鼠标移入移出
  • nmouseenter/onmouseleave // 鼠标移入移出
  • onmousedown/onmouseup // 鼠标点击和抬起
  • 案例练习-风车案例
<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="UTF-8" />
        <title>demo-风车案例</title>
        <style>
            *{
                padding: 0;
                margin: 0;
            }
            ul li{
                list-style: none;
            }
            .box {
                position: absolute;
                left: 50%;
                top: 50%;
                transform: translate(-50%, -50%);
                width: 300px;
                height: 400px;
                background-color: red;
                }
            .box ul {
                width: 300px;
                height: 300px;
                animation: move 2s linear infinite;
            }
            @keyframes move {
                from{transform:rotate(0)}
                to{transform:rotate(360deg)}
            }
            .box ul li {
                float: left;
                width: 150px;
                height: 150px;
            }
            .box ul li:nth-child(1),.box ul li:nth-child(4){
                background-color: aqua;
                border-radius: 0 90% 0 90%;
            }
            .box ul li:nth-child(2),.box ul li:nth-child(3) {
                background-color: pink;
                border-radius:  90% 0 90% 0;
            }
            .box button {
                position: absolute;
                bottom: 0;
                left: 50%;
                transform: translate(-50%);
            }
        </style>
    </head>
    <body>
        <div class="box">
            <ul id="list">
                <li></li>
                <li></li>
                <li></li>
                <li></li>
            </ul>
            <button>转/停</button>
        </div>
        <script>
            var ul = document.querySelector('#list')
            var btn = document.querySelector('button')
            var flag = true
            btn.onclick = function() {
                if(flag) {
                    ul.style.animationPlayState = 'paused';
                } else {
                    ul.style.animationPlayState = 'running';
                }
                flag = !flag
            }
        </script>
    </body>
</html>

3. 开关思想

<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="UTF-8" />
        <title>20_开关思想-显示隐藏</title>
        <style>
            div {
                width: 200px;
                height: 200px;
                background-color: aqua;

                /* 元素隐藏方式 */
                /* display: none; 不占位 */
                /* visibility: hidden; 占位 */
                /* opacity: 0; 占位 */

                /* transform: translateX(10000px);占位 */
                /* transform: scale(0);占位 */
                /* transform: rotateY(90deg);占位 */
                /* transform: skew(90deg); */

                /* width: 0;占位 */
                /* height: 0;占位 */
            }
        </style>
    </head>
    <body>
        <div></div>
        <button>按钮</button>

        <script>
            var btn = document.querySelector('button');

            var div = document.querySelector('div');

            var flag = true;
            btn.onclick = function(){
                if(flag) {
                    div.style.visibility = 'hidden';
                }else {
                    div.style.visibility = 'visible';
                }
                flag = !flag;
            }
        </script>
    </body>
</html>

4. 键盘事件

  • onkeyup // 按键抬起
  • onkeydown // 按键落下
  • onfocus // 获取焦点
  • onblur // 失去焦点

4.1 onkeyup和onkeydown使用

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <input type="text" />
        <!--键盘事件除了给表单类元素添加以外还能给document-->
        
        <script type="text/javascript">
            window.onload = function(){
                var inputNode = document.querySelector('input');
                
//              inputNode.onkeydown = function(){
//                  console.log('按下');//如果按下不放,那么这个按下事件是重复触发
//              }
                
                inputNode.onkeyup = function(){
                    console.log('抬起');//只会触发一次,用的比较多,可以保证事件函数只执行一次
                }
            }
        </script>
    </body>
</html>

4.2 keycode键码

案例: 如果输入的是回车则打印回车,如果输入的是shift那么就打印shift

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <input type="text" />

        <script type="text/javascript">
            window.onload = function() {
                var inputNode = document.querySelector('input');

                inputNode.onkeyup = function(e) {
                    //与其说我们在讲键盘事件,不如说我们在讲怎么区分哪个键的事件
                    //区分哪个键,我们需要通过键码去区分
                    //键码在事件对象当中:每一个事件触发的时候都会有独立事件对象
                    //  事件对象就是回调函数的第一个参数,所有的事件触发的时候都会有这个对象
                    //  事件对象是一个对象,不是我们自己封装的对象,而是当触发事件的时候,系统会
                    //  自动的帮我们把和这一次触发事件相关的信息封装为 一个对象
                    //  系统会调用我们的回调函数,会把这个事件对象传给回调函数的第一个形参
                    //  console.log(e);
                    //如果是回车,那么就打印回车
                    if (e.keyCode === 13) {
                        console.log('回车')
                    } else if (e.keyCode === 16) {
                        console.log('shift')
                    }
                }
            }
        </script>
    </body>
</html>

4.3 onfocus和onblur

  • onfocus获取焦点
  • onblur 失去焦点
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            input{
                outline: none;
            }   
        </style>
    </head>
    <body>
        <input type="text" value="老马大哥" />
        <script>
            //获取焦点的时候,input当中的值字体颜色为green  背景色为red  
            //失去焦点的时候,input当中的值字体颜色和背景色都随机变色(变色龙)
                var inputNode = document.querySelector('input');
                //获取焦点事件
                inputNode.onfocus = function() {
                    this.style.color = 'green';
                    this.style.backgroundColor = 'red';
                };
                //失去焦点事件.
                inputNode.onblur = function() {
                    //给字体颜色求的随机颜色
                    var red1 = Math.floor(Math.random() * 256);
                    var green1 = Math.floor(Math.random() * 256);
                    var blue1 = Math.floor(Math.random() * 256);
                    //给背景颜色求的随机颜色
                    var red2 = Math.floor(Math.random() * 256);
                    var green2 = Math.floor(Math.random() * 256);
                    var blue2 = Math.floor(Math.random() * 256);
                    //设置随机颜色
                    this.style.color = 'rgb(' + red1 + ',' + green1 + ',' + blue1 + ')';
                    this.style.backgroundColor = 'rgb(' + red2 + ',' + green2 + ',' + blue2 + ')';
                };
        </script>
    </body>
</html>
  • 案例练习-- 全选,全不选,反选
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <input type="checkbox" id="c1"/>
        <label for="c1">抽烟</label>
        
        <label>
            <input type="checkbox" />喝酒
        </label>
        
        <label>
            <input type="checkbox" />烫头
        </label>
        
        <label>
            <input type="checkbox" />打豆豆
        </label>
        
        <br />      
        <button>全选</button>
        <button>全不选</button>
        <button>反选</button>
        
    <script>
        var btns = document.querySelectorAll('button');
        var inputNodes = document.querySelectorAll('input');
        //全选
        btns[0].onclick = function(){
            for(var i = 0; i < inputNodes.length; i++){
                inputNodes[i].checked = true;
                }
        }
        //全不选
        btns[1].onclick = function(){
            for(var i = 0; i < inputNodes.length; i++){
                inputNodes[i].checked = false;
            }
        }
        //反选
        btns[2].onclick = function(){
            for(var i = 0; i < inputNodes.length; i++){
                inputNodes[i].checked = !inputNodes[i].checked;
            }
        }
    </script>
    </body>
</html>
  • 案例练习---轮播的左右切换渐变效果
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            ul,li{
                list-style: none;
            }
            
            img{
                display: block;
                /*vertical-align: middle;*/
            }
            
            a{
                text-decoration: none;
            }
            
            input{
                outline: none;
            }
            
            .clearFix:after{
                content: '';
                display: table;
                clear: both;
            }
            
            #box{
                position: relative;
                width: 600px;
                height: 300px;
                margin: 50px auto;
                overflow: hidden;
            }
            
            #box .list{
                width: 3000px;
                height: 300px;
            }
            
            #box .list li{
                float: left;
                width: 600px;
                height: 300px;
            }
            
            #box .list li img{
                width: 600px;
                height: 300px;
            }
            
            #box span{
                position: absolute;
                top: 50%;
                transform: translateY(-50%);
                width: 50px;
                height: 100px;
                background-color: rgba(200,200,200,.7);
                font-size: 50px;
                text-align: center;
                line-height: 100px;
                color: white;
                opacity: 0;
                transition: opacity 2s;
            }
            #box .left{
                left: 0;
            }
            #box .right{
                right: 0;
            }
            
            #box .iconList{
                position: absolute;
                left: 50%;
                transform: translateX(-50%);
                bottom: 10px;
                overflow: hidden;
            }
            
            #box .iconList li{
                float: left;
                width: 40px;
                height: 40px;
                margin-right: 10px;
                border-radius: 50%;
                background-color: gray;
            }
            
            #box .iconList li.current{
                background-color: red;
            }
        </style>
    </head>
    <body>
        <div id="box">
            <ul class="list">
                <li><img src="img/1.jpg"/></li>
                <li><img src="img/2.jpg"/></li>
                <li><img src="img/3.jpg"/></li>
                <li><img src="img/4.jpg"/></li>
                <li><img src="img/5.jpg"/></li>
            </ul>
            
            <span class="left">  <  </span>
            <span class="right">  >  </span>
            
            
            <ul class="iconList">
                <li class="current"></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
            </ul>
        </div>
        
        <script type="text/javascript">
            var box = document.querySelector('#box');

            var span_list = document.querySelectorAll('#box span');

            box.onmouseenter = function(){
                span_list[0].style.opacity = '.7';
                span_list[1].style.opacity = '.7';
            }

            box.onmouseleave = function(){
                span_list[0].style.opacity = 0;
                span_list[1].style.opacity = 0;
            }
        </script>
    </body>
</html>
  • 案例练习---一级菜单联动二级菜单
<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="UTF-8" />
        <title>01_案例练习-一级菜单联动二级菜单</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
            ul li {
                list-style: none;
            }
            ul li a {
                text-decoration: none;
            }
            .list {
                position: relative;
                width: 200px;
                height: 210px;
                border: 1px solid #000;
                /* box-sizing: border-box; */
            }
            ul li {
                height: 70px;
                text-align: center;
                line-height: 70px;
                background-color: aquamarine;
            }
            .list > li:nth-child(2) {
                border-top: 1px solid #000;
                border-bottom: 1px solid #000;
                box-sizing: border-box;
            }
            ul li .listIn{
                display: none;
                position: absolute;
                left: 201px;
                top: -1px;
                border: 1px solid #000;
                width: 200px;
                height: 210px;
            }
        </style>
    </head>
    <body>
        <ul class="list">
            <li>
                <a href="javascript:;">手机</a>
                <ul class="listIn">
                    <li>苹果</li>
                    <li>华为</li>
                    <li>小米</li>
                </ul>
            </li>
            <li>
                <a href="javascript:;">电脑</a>
                <ul class="listIn">
                    <li>宏碁</li>
                    <li>戴尔</li>
                    <li>联想</li>
                </ul>
            </li>
            <li>
                <a href="javascript:;">汽车</a>
                <ul class="listIn">
                    <li>奔驰</li>
                    <li>奥迪</li>
                    <li>宝马</li>
                </ul>
            </li>
        </ul>
        <script>
            var list = document.querySelectorAll('.list > li')
            var listIn = document.querySelectorAll('.list > li .listIn')
            for(var i = 0; i < list.length; i++) {
                list[i].index = i;
                list[i].onmouseenter = function() {
                    listIn[this.index].style.display = 'block'
                }
                list[i].onmouseleave = function() {
                    listIn[this.index].style.display = 'none'
                }
            }
        </script>
    </body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,482评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,377评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,762评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,273评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,289评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,046评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,351评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,988评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,476评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,948评论 2 324
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,064评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,712评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,261评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,264评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,486评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,511评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,802评论 2 345

推荐阅读更多精彩内容

  • 一.鼠标事件 1.mousewheel鼠标滚轮事件**获取当前滚轮的值 ** 如果 值 小于 0 滚轮 往下滑如...
    晚点相遇_d981阅读 668评论 0 0
  • 事件分为鼠标事件,键盘事件,表单事件以及移动端事件,今天主要介绍一下鼠标键盘以及表单事件 鼠标事件 redDiv....
    likeli阅读 234评论 0 0
  • 鼠标事件 onmousedown:鼠标按钮被按下(左键或者右键)时触发。不能通过键盘触发。onmouseup:鼠标...
    小飞侠zzr阅读 349评论 0 0
  • 1. 鼠标事件 // 点击事件 onclick // 双击事件 ondblclick // 鼠标右键点击事件 on...
    晚_f2a9阅读 488评论 0 0
  • 事件的概述:事件相当于一个(执行者执行 -- 观察者观察 -- 处理函数执行)的流程,这个流程称为事件。是一个异步...
    诋毁_c424阅读 105评论 0 0