定时器之延时触发鼠标悬浮事件

前端代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>定时器之延时触发鼠标悬浮事件</title>
        <script src="https://lib.baomitu.com/jquery/3.4.1/jquery.js"></script>
    </head>
    <style>
        body{
            background: #BEE7E9;
            width: 100%;
            height: 100%;
        }
        .hoverDiv{
            width: 100px;
            height: 100px;
            margin: 50px;
            background: #ECAD9E;
            border: 3px solid #F4606C;
            border-radius: 9px;
            cursor: pointer;
        }
        #dialog_div{
            display: none;
            width: 100px;
            background-color: #2aa8e4fa;
            orphans: inherit;
            z-index: 99;
        }
    </style>
    <script type="text/javascript">
        //声明定时器变量
        var monitor;
        //传递divde DOM Event对象de中间变量(如需要动态加载div)
        var thisevent;
        //定时器之延时触发鼠标悬浮事件
        function hoverEvent(param){
            //把divde DOM Event对象赋值给中间变量thisevent
            thisevent = event;
            //初始化时间
            var initialDate = new Date();
            //相差de毫秒数
            var minseconds=0;
            //设置返回时间(目前是ms)
            var setReturnTime = 1000;
            //清除上一次de定时器
            window.clearInterval(monitor)
            //定时器
            monitor = setInterval(function (){
                //返回相差de毫秒数
                minseconds = returnDelayTime(initialDate);
                //设置时间小于定时器de时间则结束触发功能事件
                if(setReturnTime<minseconds) {
                    //清除这一次de定时器
                    window.clearInterval(monitor);
                    //延时调用de功能事件
                    hoverFunctionEvent(param);
                }
            },100);
        }
        //清除鼠标延时定时器
        function removeEvent(){
            window.clearInterval(monitor);
            //隐藏动态加载模块
            $("#dialog_div").hide();
        }
        //返回相差de时间
        function returnDelayTime(initialDate){
            //初始时间
            var startTime = initialDate.getTime();
            //获取当前时间
            var date = new Date();
            var nowTime = date.getTime();
            ////时间差de毫秒数
            var dateDiff = nowTime - startTime;
            //计算出相差天数
            var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000));
            //计算天数后剩余de毫秒数
            var leave1=dateDiff%(24*3600*1000);
            //计算出小时数
            var hours=Math.floor(leave1/(3600*1000));
            //计算小时后剩余de毫秒数
            var leave2=leave1%(3600*1000);
            //计算相差分钟数
            var minutes=Math.floor(leave2/(60*1000));
            //计算分钟数后剩余de毫秒数
            var leave3=leave2%(60*1000);
            //计算相差秒数
            var seconds=Math.round(leave3/1000);
            //计算秒数后剩余de毫秒数
            var minseconds=leave3%(60*1000);
            //返回相差de毫秒数
            return minseconds;
        }
        //显示行政班级课程表""功能事件""
        function hoverFunctionEvent(param){
            //显示动态加载模块de内容
            var showDiv=$("#dialog_div");
            showDiv.css(‘position‘,‘absolute‘);
            showDiv.css(‘z-index‘,‘9999‘);
            showDiv.html("可Ajax动态写入模块内容:"+param);
            //根据divde DOM Event对象de中间变量thisevent动态定位
            showDiv.css(‘left‘,parseInt(thisevent.x)+5+parseInt($(document).scrollLeft())+"px");
            if(parseInt(thisevent.y)-parseInt(showDiv.height())>=0){
                showDiv.css(‘top‘,parseInt(thisevent.y)+parseInt($(document).scrollTop())-parseInt(showDiv.height())+"px");
            }else{
                var divtop = parseInt(showDiv.height())-parseInt(thisevent.y);
                showDiv.css(‘top‘,parseInt(thisevent.y)+parseInt($(document).scrollTop())-parseInt(showDiv.height())+parseInt(divtop)+"px");
            }
            showDiv.show();
        }
    </script>

    <body>
        <div onmouseover="hoverEvent(‘ok‘)" onmouseout="removeEvent()" class="hoverDiv">
            定时器之延时触发鼠标悬浮事件
        </div>
        <div onmouseover="hoverEvent(‘ok‘)" onmouseout="removeEvent()" class="hoverDiv">
            定时器之延时触发鼠标悬浮事件
        </div>

        <div onmouseover="hoverEvent(‘ok‘)" onmouseout="removeEvent()" class="hoverDiv">
            定时器之延时触发鼠标悬浮事件
        </div>

        <div id="dialog_div">
            动态加载模块
        </div>
    </body>

</html>

效果图:

原文地址:https://www.cnblogs.com/mjtabu/p/11579202.html

时间: 2024-11-02 11:43:09

定时器之延时触发鼠标悬浮事件的相关文章

鼠标悬浮事件

1.任务需求:一个按钮,一个Div,当鼠标移出按钮时,按钮显示请移入鼠标,Div隐藏,当鼠标移入时,按钮显示请移出鼠标,Div显示. 2.任务分析:监听鼠标的移入移出事件,修改元素标签的文本 3.代码实现: <body> <button id="hover">请移入鼠标</button> <div style="height: 150px;width: 150px;background: coral;margin-top: 20px;

用JS去设置HTML页面鼠标悬浮时改变背景图片

首先将每一个li上面添加一个移入事件onmouseover;在悬浮事件里面设置event事件源 JS样式里首先应该找到页面里的ul 然后在ul里面的所有li var ln = bg.querySelectorAll("li"); 在移入函数中获取触发事件元素    var leg = e.target;//获得触发事件元素   target 事件属性可返回事件的目标节点(触发该事件的节点), 在循环里面初始化背景图片 设置鼠标悬浮时背景图片 event事件源触发了鼠标悬浮事件 如果在初

Qt鼠标双击事件mouseDoubleClickEvent(QMouseEvent* event)

重写mouseDoubleClickEvent(QMouseEvent event)* 1.实例:双击窗口时输出"sss" /*widget.h*/ #ifndef WIDGET_H #define WIDGET_H #include<QWidget> #include<QDebug> class Widget : public QWidget { Q_OBJECT public: Widget(QWidget* parent=0); ~Widget(){} p

Unity3D导入外部任务模型无法触发鼠标事件解决方案

前几日 在做U3D测试的时候 导入了网上的一个人物模型 但是后来发现无论如何该模型都无法响应诸如:OnMouseDown 这些鼠标事件 又用U3D自带的水管工做了测试 发现不是我系统的问题= = 水管工对鼠标事件还是有反应的 遂百度之 查到的解决方法是 在Project窗口中选中导入FBX模型,在右边的Inspector中选中Generate Colliders 说是因为U3D默认导入的模型没有启动碰撞机Colliders 但是------ 我在确定模型的Generate Colliders被选

C#/winform 自动触发鼠标、键盘事件

要在C#程序中触发鼠标.键盘事件必须要调用windows函数. 一.鼠标事件的触发 1.引用windows函数mouse_event /// <summary> /// 鼠标事件 /// </summary> /// <param name="flags">事件类型</param> /// <param name="dx">x坐标值(0~65535)</param> /// <param

CSS+元素,鼠标事件触发鼠标模形变成手状的形状

|| 版权声明:本文为博主原创笔记,未经博主允许不得转载. CSS+元素,鼠标事件触发鼠标模形变成手状的形状,以及其他样式. 方案一:使用CSS样式改变,鼠标移动到元素上显示手状. 1 cursor:pointer; 方案二:使用JS触发事件改变原样式:鼠标事件onmouseover(鼠标移动到元素上触发事件)触发时设置样式 1 // 使用在元素的标签上的事件 2 // 第一种方式 3 onmouseover="this.style.cursor='mouseHand'" 4 5 //

Winform 中panel的mousewheel鼠标滚轮事件触发

如果将窗体或容器控件(如Panel控件)的AutoScroll属性设置为True时,那么当窗体或Panel容不下其中的子控件时就会出现 滚动条,通过移动滚动条可以上下显示出窗体或Panel中的全部内容.但是默认情况下滚动条的移动只能通过鼠标直接拖动滚动条来实现,而不能通过鼠标的滚 轮来实现上下移动,因此需要手动添加代码来实现这个功能. 滚动鼠标的滚轮,触发的是窗体或控件上的 MouseWheel 事件.但是在VS.net2005中,窗体和控件的事件列表中却不包含 MouseWheel 事件,因此

Selenium 鼠标键盘事件

鼠标事件-概述 1.单击 click().click(WebElement onElement) 2.双击doubleClick() . doubleClick(WebElement onElement) 3.右击contextClick(). contextClick(WebElement onElement) 4.移动/悬浮 moveByOffset(int xOffset, int yOffset).moveToElement(WebElement toElement).moveToEle

定时器之计数器应用

定时器的定时器应用估计大家都略有耳闻,而且都会用.那计数器功能了解?说实话,这个功能确实是使用场景少,用途少.但存在即合理,公司设计就会有用途.学习这件事情,不能以用处不大为由而去忽略不看.下面来看看定时器之计数器应用. 概述 计数器是对外来脉冲信号计数,对来自于外部引脚P3.4(T0),P3.5(T1),P1.1(T2)的外部信号计数.在设置计数器工作状态时,每当外部输入的脉冲发生负跳变(原来正常状态下是高电平,没有事件发生,当高电平变为低电平时,即发生负跳变),计数器加1,知道加满溢出,向c