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 CSS画图之基础篇
Jul 29 Javascript
Javascript学习笔记7 原型链的原理
Jan 11 Javascript
解决jquery异步按一定的时间间隔刷新问题
Dec 10 Javascript
Javascript倒计时页面跳转实例小结
Sep 11 Javascript
Textarea根据内容自适应高度
Oct 28 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
Nov 23 Javascript
JS对象深度克隆实例分析
Mar 16 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
Oct 24 Javascript
Vue.js 2.5新特性介绍(推荐)
Oct 24 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
Jun 26 Javascript
JS实现select选中option触发事件操作示例
Jul 13 Javascript
微信小程序云开发修改云数据库中的数据方法
May 18 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
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
ThinkPHP整合百度Ueditor图文教程
2014/10/21 PHP
php绘制一个扇形的方法
2015/01/24 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
javascript 写类方式之一
2009/07/05 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
jquery 使用简明教程
2014/03/05 Javascript
window resize和scroll事件的基本优化思路
2014/04/29 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
每日十条JavaScript经验技巧(一)
2016/06/23 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
2019/05/22 Javascript
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
利用python实现数据分析
2017/01/11 Python
对pandas的dataframe绘图并保存的实现方法
2017/08/05 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
Python离线安装PIL 模块的方法
2019/01/08 Python
Python @property使用方法解析
2019/09/17 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
python中xlrd模块的使用详解
2021/02/01 Python
css3 伪元素和伪类选择器详解
2014/09/04 HTML / CSS
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
Marlies Dekkers内衣法国官方网上商店:国际知名的荷兰内衣品牌
2019/03/18 全球购物
掌上明珠Java程序员面试总结
2016/02/23 面试题
《忆江南》教学反思
2014/04/07 职场文书
史上最牛辞职信
2015/05/13 职场文书
python数字转对应中文的方法总结
2021/08/02 Python
Python办公自动化解决world文件批量转换
2021/09/15 Python