0
点赞
收藏
分享

微信扫一扫

JavaScript学习第十五天(鼠标事件、游戏机抽奖)

捡历史的小木板 2022-04-28 阅读 73
javascript

作业抽奖

文章目录

HTML DOM事件

事件:允许js在html文档元素注册不同的事件处理程序,驱动函数/方法

  • 鼠标事件
  • 键盘事件
  • 表单事件
  • 剪切板事件
  • 拖拽事件
  • 打印事件
  • 媒体事件
  • 框架事件
  • 动画事件
  • 过渡事件

鼠标事件

鼠标点击事件

  • onclick 鼠标左键点击触发
  • ondblclick 鼠标左键双击触发
  • onmousedown 鼠标按键按下时触发(左中右键均可以)
  • onmouseup 鼠标按键松开时触发(左中右键均可以)

鼠标移动事件

  • onmouseover 鼠标悬浮在元素上面时触发(如果从父元素再进入子元素,会再次触发
  • onmouseout 鼠标离开元素上面时触发(从父元素移动到子元素,或者从子元素再移动到父元素,都会再次触发

  • onmouseenter 鼠标进入元素时触发(如果从父元素再进入子元素,不会再次触发
  • onmouseleave 鼠标离开元素时触发(从父元素移动到子元素,或者从子元素再移动到父元素,都不会再次触发

  • onmousemove 鼠标移动时触发
  • onmousewheel 鼠标滚轮事件,已废弃,由onwheel代替
  • onwheel 鼠标滚轮事件,鼠标滚轮出现动作以后触发
  • oncontextmenu 鼠标右键菜单事件,鼠标点击右键时触发
  .box{
            width: 300px;
            height: 50px;
            line-height: 50px;
            text-align: center;
            border: 1px solid;
            margin: 10px auto;
            background-color: rgb(220, 158, 76);
            color: white;
        }
    <div class="box">onclick</div>
    <div class="box">ondblclick</div>
    <div class="box">onmousedown</div>
    <div class="box">onmouseup</div>
    <div class="box">onmouseover</div>
    <div class="box">onmouseout</div>
    <div class="box">onmouseenter</div>
    <div class="box">onmouseleave</div>
    <div class="box">onmousemove</div>
    <div class="box">onmousewheel</div>
    <div class="box">onwheel</div>
    <div class="box">oncontextmenu</div>
  var aBoxs = document.getElementsByClassName('box');

        // onclick
        aBoxs[0].onclick = function(e){
            console.log('onclick事件');  // onclick事件
            console.log(e);  // PointerEvent {isTrusted: true, pointerId: 1, width: 1, height: 1, pressure: 0, …}
        }

        aBoxs[1].ondblclick = function(e){
            console.log('ondblclick事件');
            console.log(e);    
        }

        aBoxs[2].onmousedown = function(e){
            console.log('onmousedown事件');
            console.log(e);    
        }

        aBoxs[3].onmouseup = function(e){
            console.log('onmouseup事件');
            console.log(e);    
        }

        aBoxs[4].onmouseover = function(e){
            console.log('onmouseover事件');
            console.log(e);    
        }

        aBoxs[5].onmouseout = function(e){
            console.log('onmouseout事件');
            console.log(e);    
        }

        aBoxs[6].onmouseenter = function(e){
            console.log('onmouseenter事件');
            console.log(e);    
        }

        aBoxs[7].onmouseleave = function(e){
            console.log('onmouseleave事件');
            console.log(e);    
        }

        aBoxs[8].onmousemove = function(e){
            console.log('onmousemove事件');
            console.log(e);    
        }

        aBoxs[9].onmousewheel = function(e){
            console.log('onmousewheel事件');
            console.log(e);    
        }

        aBoxs[10].onwheel = function(e){
            console.log('onwheel事件');
            console.log(e);    
        }

        aBoxs[11].oncontextmenu = function(e){
            console.log('oncontextmenu事件');
            console.log(e);    
        }

总结

  • 今天所学习的内容并不多,只是了解了一下鼠标的一些事件,对于它的针对性的练习也没有,不过在我看来,对于鼠标事件的一些应用应该会比较容易上手。
  • 接着说说今天作业的情况,今天有个作业是写个老虎机样式的抽奖的功能,
    我现在复盘一下js部分:
  1. 首先我们要做到的是,点击按钮能让一个小方块的样式发生改变,我们可以通过点击修改类名的方式实现。
  2. 在点击一下可以改变小方块的样式的基础上,添加一个循环定时器,通过鼠标点击事件去调用,定时器里的内容就是让每个小方块的样式挨个改变,这样我们就实现了点击按钮,实现老虎机的一个效果
  3. 接着我们要做的就是点击完以后,循环定时器能够在一定的时间内清除掉,那么我就想到了延时定时器,在点击按钮时,同时执行延时定时器,时间到以后,就清除循环定时器(clearInterval(定时器的名称))
  4. 现在我们也做到了点击按钮,画面动起来,并且会在一段时间后停止,但是它持续的时间总是一样的,那么这时候延时定时器的执行时间就要用到我们的Math的random(随机数)方法了,最后通过一系列的操作,最终完成了本次的作业
  • 虽然说这次作业我也做出来了,但是花了我很多的时间,在总体的大结构上没有太大的问题,就是一些细节方面出现了很多的失误,出现了解决掉一个问题以后,又冒出一个问题的情况。
  • 所以说js是相对严谨一点的语言,它的标点、顺序都是需要我们去用心的,不能刷小聪明,为了一时的方便,浪费更多的时间。现在把代码分享出来
  • css代码
   * {
            margin: 0;
            padding: 0;
            list-style: none;
        }

        ul {
            width: 200px;
            margin: 150px auto;
        }

        li {
            width: 60px;
            height: 60px;
            border: 2px solid;
            float: left;
            text-align: center;
            line-height: 60px;
            cursor: pointer;
            /* background-color: antiquewhite; */
        }

        #btn {
            background-color: cadetblue;
            border: 0;
            width: 100%;
            height: 100%;
            cursor: pointer;
            color: white;
        }

        .change {
            background-color: antiquewhite;
            color: blue;
            /* background-origin: padding-box; */
            border-color: black;
        }
  • html代码
 <ul>
        <li class="smallBox">1</li>
        <li class="smallBox">2</li>
        <li class="smallBox">3</li>
        <li class="smallBox">8</li>
        <li><button id="btn">抽奖</button></li>
        <li class="smallBox">4</li>
        <li class="smallBox">7</li>
        <li class="smallBox">6</li>
        <li class="smallBox">5</li>
    </ul>
  • js代码
 // 获取元素
    var aBoxs = document.getElementsByClassName('smallBox');
    var oBtn = document.getElementById('btn');
    // 创建一个数组用于存放方框的索引
    var arr = [3,0,1,2,4,7,6,5];                       //  数组修改过了
    // 创建全局变量用于获取数组中的值
    var index = 0;
    // 设置全局变量用于存放定时器
    var timer;
    // 设置定时器
    oBtn.onclick = function () {
        oBtn.disabled = true;   // 当点击一次按钮以后,按键就转为禁用
        var num = Math.random() * 50 + 1;   // 获取随机数 用于延迟定时器
        timer = setInterval(function () {    // 创建循环定时器
            index == 7 ? index = 0 : index++;
            for (var k = 0; k < arr.length; k++) {
                    aBoxs[k].className = 'smallBox';
                }
                // 单独设置
                aBoxs[arr[index]].className = 'smallBox change';
                // 判断条件
                console.log('恭喜你获得了' + aBoxs[arr[index]].innerHTML + '等奖');
            
        }, 100)
        // 设置延时定时器,用于清除循环定时器
        setTimeout(function () {
            clearInterval(timer);  // 清除定时器
            oBtn.disabled = false;  // 接触按钮的禁用
            alert('恭喜你获得了' + aBoxs[arr[index]].innerHTML + '等奖')
        }, num * 100)
    }

个人觉得这些代码可以进行优化,但是由于能力问题,暂时还不能达到,希望能有大神指点

举报

相关推荐

学习javaweb第十五天

打卡学习第十五天

HCIP 第十五天

HCIP第十五天

学习C语言第十五天

学习python的第十五天

第十五天6号

0 条评论