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 相关文章推荐
JavaScript 不只是脚本
May 30 Javascript
jQuery实现的立体文字渐变效果
May 17 Javascript
html中table数据排序的js代码
Aug 09 Javascript
使用闭包对setTimeout进行简单封装避免出错
Jul 10 Javascript
jQuery动态添加与删除tr行实例代码
Oct 18 Javascript
JavaScript简单计算人的年龄示例
Apr 15 Javascript
ES6扩展运算符用法实例分析
Oct 31 Javascript
js中apply和Math.max()函数的问题及区别介绍
Mar 27 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
May 21 Javascript
在Vue项目中,防止页面被缩放和放大示例
Oct 28 Javascript
微信小程序如何实现精确的日期时间选择器
Jan 21 Javascript
nginx部署多个vue项目的方法示例
Sep 06 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
用cookies来跟踪识别用户
2006/10/09 PHP
PHP学习资料汇总与网址
2007/03/16 PHP
php常用Stream函数集介绍
2013/06/24 PHP
laravel学习教程之关联模型
2016/07/30 PHP
详解Yaf框架PHPUnit集成测试方法
2017/12/27 PHP
PHP数组访问常用方法解析
2020/09/05 PHP
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
基于javascript实现tab选项卡切换特效调试笔记
2016/03/30 Javascript
JavaScript数组方法大全(推荐)
2016/07/05 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
2017/01/11 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
2019/09/10 Javascript
微信小程序静默登录的实现代码
2020/01/08 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
在Django的模板中使用认证数据的方法
2015/07/23 Python
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
Windows下安装python2和python3多版本教程
2017/03/30 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
2018/12/05 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
Python装饰器用法与知识点小结
2020/03/09 Python
python实现猜数游戏(保存游戏记录)
2020/06/22 Python
python如何爬取动态网站
2020/09/09 Python
Answear匈牙利:来自全球200多个知名时尚品牌
2017/04/21 全球购物
银行贷款承诺书
2014/03/29 职场文书
安全生产月活动总结
2014/05/04 职场文书
活动总结格式
2014/08/30 职场文书
党员“四风”方面存在问题及整改措施
2014/09/24 职场文书
群众路线教育实践活动民主生活会个人检查对照思想汇报
2014/10/04 职场文书
李白故里导游词
2015/02/12 职场文书
我的1919观后感
2015/06/03 职场文书
高考满分作文赏析(2篇)
2019/08/12 职场文书
python 爬取哔哩哔哩up主信息和投稿视频
2021/06/07 Python
手把手教你实现PyTorch的MNIST数据集
2021/06/28 Python
Go语言基础map用法及示例详解
2021/11/17 Golang