JavaScript 实现简单的倒计时弹窗DEMO附图


Posted in Javascript onMarch 05, 2014

最近做一个简单的设置网页,因为需要重启设备功能,于是就想在上面加一个倒计时弹窗的界面。

刚开始的想法是自定义一个alert弹窗,但很快就发现,alert会一直停在那里等待点击确认,而不是我想要的那种自动连续显示的效果。

后来,才想到直接显示和隐藏DIV制作成的弹窗,就可以实现了。基于这个思路,于是有了下面的:

先看效果图:
JavaScript 实现简单的倒计时弹窗DEMO附图 
JavaScript 实现简单的倒计时弹窗DEMO附图 
再看源代码:

<!------------------ 重启操作 准备弹窗 ---------------> 
<div id="reboot_pre" style="width: 450px; height: 200px; margin-left:auto; margin-right:auto; margin-top:200px; visibility:hidden; background: #F0F0F0; border:1px solid #00DB00; z-index:9999"> 
<div style="width: 450px; height: 30px; background:#00DB00; line-height:30px;text-align: center;"><b>准备中</b></div> 
<br /><br /> 
<div><p style="margin-left:50px">正在努力为您准备重启操作... 还需稍候 <span id="reboot_pre_time">4</span> 秒</p></div> 
<br /> 
<div><button type="button" style="width:70px; height:30px; margin-left:340px" onclick="reboot_cancel()">取消</button></div> 
</div> 
<!------------------ 重启操作 准备弹窗 ---------------> <!------------------ 重启操作 进行弹窗 ---------------> 
<div id="reboot_ing" style="width: 450px; height: 150px; margin-left:auto; margin-right:auto; margin-top:-150px; visibility: hidden; background: #F0F0F0; border:1px solid #00DB00"> 
<div style="width: 450px; height: 30px; background:#00DB00; line-height:30px;text-align: center;"><b>进行中</b></div> 
<br /> 
<div><p style="margin-left:40px">重启操作正在进行中... 还需稍候 <span id="reboot_ing_time">14</span> 秒</p></div> 
<br /> 
<div id="progress_reboot" style="margin-left:40px;color:#00DB00;font-family:Arial;font-weight:bold;height:18px">|</div> 
<br /> 
</div> 
<!------------------ 重启操作 进行弹窗 ---------------> 

lt;script type="text/javascript"> 
var cancel_flag = 0; 
var already = 0; 
/* 网页一加载就执行的操作 */ 
window.onload = reboot(); 
/* 重启按钮的单击操作 */ 
function reboot(){ 
if(confirm("这个操作会断开现在所有的连接,并且重新启动您的设备,确定要继续操作吗?")){ 
document.getElementById("reboot_pre_time").innerHTML = 4; 
document.getElementById("reboot_ing_time").innerHTML = 14; 
document.all.progress_reboot.innerHTML = "|"; 
download_flag = 0; 
cancel_flag = 0; 
already = 0; 
setTimeout("showDiv('reboot_pre')",500); 
delayPre_reboot("reboot_pre_time"); 
} 
} 
/* 重启准备弹窗计时 5秒 */ 
function delayPre_reboot(str) { 
if(!cancel_flag){ 
var delay = document.getElementById(str).innerHTML; 
if(delay > 0) { 
delay--; 
document.getElementById(str).innerHTML = delay; 
setTimeout("delayPre_reboot('reboot_pre_time')", 1000); 
} else { 
hideDiv("reboot_pre"); 
setTimeout("showDiv('reboot_ing')",500); 
delayDo_reboot("reboot_ing_time"); 
} 
} 
} 
/* 重启进行中弹窗计时 15秒 */ 
function delayDo_reboot(str){ 
display_reboot(100); 
var delay = document.getElementById(str).innerHTML; 
if(delay > 0) { 
delay--; 
document.getElementById(str).innerHTML = delay; 
setTimeout("delayDo_reboot('reboot_ing_time')", 1000); 
} else { 
hideDiv("reboot_ing"); 
alert("重启成功!"); 
} 
} 
/* 重启准备时 取消按钮的事件*/ 
function reboot_cancel(){ 
cancel_flag = 1; 
hideDiv("reboot_pre"); 
alert("您已经成功取消了重启操作!"); 
} 
/* 显示弹窗 */ 
function showDiv (str){ 
document.getElementById(str).style.visibility = "visible"; 
} 
/* 隐藏弹窗 */ 
function hideDiv (str){ 
document.getElementById(str).style.visibility = "hidden"; 
} 
/* 重启进行中弹窗计时,缓冲条的移动*/ 
function display_reboot(max){ 
already++; 
var dispObj = document.all.progress_reboot; 
dispObj.style.width = 100.0*already/max+"px"; 
document.all.progress_reboot.innerHTML += "|||||"; 
var timer = window.setTimeout("display("+max+")",1000); 
if (already >= max){ 
window.clearTimeout(timer); 
} 
} 
</script>
Javascript 相关文章推荐
让你的CSS像Jquery一样做筛选的实现方法
Jul 10 Javascript
禁止选中文字兼容IE、Chrome、FF等
Sep 04 Javascript
javascript 实现子父窗体互相传值的简单实例
Feb 17 Javascript
javascript数组去重的六种方法汇总
Aug 16 Javascript
BootStrap实现手机端轮播图左右滑动事件
Oct 13 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
Dec 21 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
Sep 18 Javascript
Bootstrap Table 搜索框和查询功能
Nov 30 Javascript
一篇文章带你浅入webpack的DLL优化打包
Feb 20 Javascript
OpenLayers3实现测量功能
Sep 25 Javascript
javascript中layim之查找好友查找群组
Feb 06 Javascript
JavaScript实例 ODO List分析
Jan 22 Javascript
js时间比较示例分享(日期比较)
Mar 05 #Javascript
对于Form表单reset方法的新认识
Mar 05 #Javascript
js和css写一个可以自动隐藏的悬浮框
Mar 05 #Javascript
7个JS基础知识总结
Mar 05 #Javascript
100个不能错过的实用JS自定义函数
Mar 05 #Javascript
jQuery DOM操作实例
Mar 05 #Javascript
JS父页面与子页面相互传值方法
Mar 05 #Javascript
You might like
php中将字符串转为HTML的实体引用的一个类
2013/02/03 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
2018/04/12 PHP
PHP读取目录树的实现方法分析
2019/03/22 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
js比较和逻辑运算符的介绍
2013/03/10 Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
2013/03/27 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
深入理解JS函数的参数(arguments)的使用
2016/05/28 Javascript
JQuery中Ajax的操作完整例子
2017/03/07 Javascript
谈谈vue中mixin的一点理解
2017/12/12 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
vue.js 双层嵌套for遍历的方法详解, 类似php foreach()
2018/09/07 Javascript
vue使用video.js进行视频播放功能
2019/07/18 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
让python json encode datetime类型
2010/12/28 Python
python实现获取Ip归属地等信息
2016/08/27 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
Python PyQt4实现QQ抽屉效果
2018/04/20 Python
使用python语言,比较两个字符串是否相同的实例
2018/06/29 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
2019/04/01 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
CSS3模拟动画下拉菜单效果
2017/04/12 HTML / CSS
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
学前教育毕业生自荐信范文
2013/12/24 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
Python图片处理之图片裁剪教程
2021/05/27 Python
Redis读写分离搭建的完整步骤
2021/09/14 Redis
SpringBoot全局异常处理方案分享
2022/05/25 Java/Android