JS学习笔记 -- 延时器,提示框的应用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>延时显示提示框</title>
    <style>
        #div1 {
            float: left;
            width: 60px;
            height: 60px;
            background-color: aqua;
        }

        #div2 {
            position: relative;
            float: left;
            margin: 0 10px;
            width: 200px;
            height: 200px;
            background-color: #cccccc;
            display: none;
        }
    </style>
    <script>
        window.onload = function () {
            var oDiv1 = document.getElementById(‘div1‘);
            var oDiv2 = document.getElementById(‘div2‘);
            var timer = null;

//            oDiv1.onmouseover = function () {
//                clearTimeout(timer);
//                oDiv2.style.display = ‘block‘;      //鼠标移入div1时显示div2
//            };
//
//            oDiv1.onmouseout = function () {
//                timer = setTimeout(function () {
//                    oDiv2.style.display = ‘none‘;       //鼠标移除div1时隐藏div2
//                }, 500);     //为了从div1移入div2,所以移出div1时div2隐藏应该有一个延时设置
//            };
//
//            oDiv2.onmouseover = function () {
//                clearTimeout(timer);        //清除延时器设置,当鼠标移入div2时,div2应当显示
//            };
//
//            oDiv2.onmouseout = function () {
//                timer = setTimeout(function () {
//                    oDiv2.style.display = ‘none‘;       //当鼠标移出div2时,div2应当隐藏
//                }, 500);         //当鼠标移出div2并移入div1时,div2会闪烁一下再显示,设置一个延时,清除闪烁的效果;
//                // 但是设置延时器之后,鼠标移入div1时,div2却隐藏了,原因是setTimeout,
//                // 应当清除延时器,在oDiv1.onmouseover事件中添加,清除延时器的代码
//            };

//            由于这四个事件中代码两两对应地相同或相似,可以做如下简化处理:

            oDiv1.onmouseover = oDiv2.onmouseover = function () {
                clearTimeout(timer);
                oDiv2.style.display = ‘block‘;
                /*  鼠标移入div1时显示div2,虽然oDiv2.onmouseover事件中没有写oDiv2.style.display = ‘block‘;
                 但是实际上oDiv2是‘block‘状态,多写一句代码没有实质性影响*/
            };

            oDiv1.onmouseout = oDiv2.onmouseout = function () {
                timer = setTimeout(function () {
                    oDiv2.style.display = ‘none‘;       //鼠标移除div1时隐藏div2
                }, 500);     //为了从div1移入div2,所以移出div1时div2隐藏应该有一个延时设置
            };
//            简化后的代码执行结果跟前面的代码效果完全一致.
        }
    </script>
</head>
<body>
<h2>延时提示框</h2>
<div id="div1"></div>
<div id="div2"></div>
</body>
</html>

延时提示框编写时需要注意的点都记录在注释当中,逐个对照注意一下,这个功能看过视频教程之后实现起来比较顺畅,原因是在编写代码之前对所需功能做了一个列表按照列表一一实现,出现问题再进行相应的调整比上来直接写代码强多了。

时间: 2024-10-25 01:19:24

JS学习笔记 -- 延时器,提示框的应用的相关文章

iOS学习笔记--01swift实现提示框第三方库:MBProgressHUD

本文使用swift语言使用MBProgressHUD. 开源项目MBProgressHUD可以实现多种形式的提示框.使用简单,方便. GitHud的下载地址是:https://github.com/jdg/MBProgressHUD/ 下载完成后,将MBProgressHUD.h和MBProgressHUD.m拖入已经新建好的Swift项目.因为使用的swift语言,所以拖入项目的时候会提示是否新建一个桥接objective-c与swift的文件,选择是即可.此步骤会自动新建一个文件.如图: 在

[Pro Angular.JS]学习笔记1.1:设置开发环境

可以使用yeoman.io,很方便.我已经写了一篇随笔,介绍如何使用.这里也有一篇介绍的文章:http://www.cnblogs.com/JoannaQ/p/3756281.html 代码编辑器,在Mac下用了一下WebStorm,太恶心了.另外发现书的作者使用的开发环境是Windows + VS Express 2013,为了方便学习,我也使用VS Express 2013 Update2.VS2013用起来蛮舒服的,把WebStorm比得跟驼屎一样.也许是因为我没用习惯吧. 1.安装Nod

【转】Backbone.js学习笔记(二)细说MVC

文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Backbone源码结构 1: (function() { 2: Backbone.Events // 自定义事件 3: Backbone.Model // 模型构造函数和原型扩展 4: Backbone.Collection // 集合构造函数和原型扩展 5: Backbone.Router // 路由

JS学习笔记--仿手机发送内容交互

学习JS笔记----记录上课中学习的知识点,分享下老师教的内容: 1.html内容 <div id="box"> <div id="message"> <!--<p class="left"> <img src="img/136.jpg" /> <span>这是第一句话</span> </p> <p class="righ

Vue.js学习笔记:在元素 和 template 中使用 v-if 指令

f 指令 语法比较简单,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <script src="https://cdn.bootcss.com/vue/2.2.

Angular JS 学习笔记

特定领域语言 编译器:遍历DOM来查找和它相关的属性, 分为编译和链接两个阶段, 指令:当关联的HTML结构进入编译阶段时应该执行的操作,可以写在名称里,属性里,css类名里:本质上是函数 稳定的DOM:绑定了数据模型的DOM元素的实例不会在绑定的生命周期发生改变 作用域:用来检测模型的改变和为表达式提供执行上下文的 AngularJS 和其它模板系统不同,它使用的是DOM而不是字符串 指令: 由某个属性.元素名称.css类名出现而导致的行为,或者说是DOM的变化 Filter过滤器:扮演着数据

Node.js学习笔记(3) - 简单的curd

这个算是不算完结的完结吧,前段时间也是看了好久的Node相关的东西,总想着去整理一下,可是当时也没有时间: 现在看来在整理的话,就有些混乱,自己也懒了,就没在整理,只是简单的记录一下 一.demo的简单介绍 这次demo,只涉及到简单的curd操作,用到的数据库是mongo,所以要安装mongo数据库,数据库连接驱动是mongoose: 当然关于mongo的驱动有很多,比如mongous mongoskin等:(详见http://cnodejs.org/topic/4f4ca8e0940ce2e

十七、Android学习笔记_Android 使用 搜索框

1.在资源文件夹下创建xml文件夹,并创建一个searchable.xml: android:searchSuggestAuthorityshux属性的值跟实现SearchRecentSuggestionsProvider类中的setupSuggestions方法的第一个参数相同.android:searchSuggestSelection 指搜索参数 <?xml version="1.0" encoding="utf-8"?> <searchab

JS学习笔记-OO疑问之封装

封装是面向对象的基础,今天所要学习的匿名函数与闭包就是为了实现JS的面向对象封装.封装实现.封装变量,提高数据.系统安全性,封装正是面向对象的基础. 匿名函数 即没有名字的函数,其创建方式为 function(){...} 单独存在的匿名函数,无法运行,可通过赋值给变量调用或通过表达式自我执行来实现运行. 1.赋值给变量为一般的函数使用方式 var run = function(){ return '方法运行中'; }; alert(run()); 2.通过表达式自我执行 (function(a