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 相关文章推荐
上传文件返回的json数据会被提示下载问题解决方案
Dec 03 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
Apr 16 Javascript
jquery简单的弹出层浮动层代码
Apr 27 Javascript
JQuery中基础过滤选择器用法实例分析
May 18 Javascript
JavaScript运算符小结
Jun 03 Javascript
莱鸟介绍javascript onclick事件
Jan 06 Javascript
AngularJS基础 ng-submit 指令简单示例
Aug 03 Javascript
window.open不被拦截的简单实现代码(推荐)
Aug 04 Javascript
Angularjs 实现动态添加控件功能
May 25 Javascript
动态加载、移除js/css文件的示例代码
Mar 20 Javascript
vue elementui form表单验证的实现
Nov 11 Javascript
JS实现图片轮播效果实例详解【可自动和手动】
Apr 04 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中根据某年第几天计算出日期年月日的代码
2011/02/24 PHP
hadoop中一些常用的命令介绍
2013/06/19 PHP
php读取大文件示例分享(文件操作类)
2014/04/13 PHP
php实现的任意进制互转类分享
2015/07/07 PHP
PHP 传输会话curl函数的实例详解
2017/09/12 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
PHP实现计算器小功能
2020/08/28 PHP
php中yar框架实例用法讲解
2020/12/27 PHP
(JS实现)MapBar中坐标的加密和解密的脚本
2007/05/16 Javascript
JS 自动安装exe程序
2008/11/30 Javascript
JavaScript DOM 学习第九章 选取范围的介绍
2010/02/19 Javascript
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
JS跨域代码片段
2012/08/30 Javascript
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
2013/11/14 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
详解Vue 动态添加模板的几种方法
2017/04/25 Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
2018/02/09 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
微信小程序实现消息框弹出动画
2020/04/18 Javascript
JavaScript对象属性操作实例解析
2020/02/04 Javascript
微信小程序:报错(in promise) MiniProgramError
2020/10/30 Javascript
[01:23:59]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 VP vs Secret
2018/04/03 DOTA
python正则表达式re模块详解
2014/06/25 Python
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
财经学院自荐信范文
2014/02/02 职场文书
关于旷工的检讨书
2014/02/02 职场文书
党员批评与自我批评
2014/02/12 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
村主任“四风”问题个人整改措施
2014/10/04 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
2015年党总支工作总结
2015/05/25 职场文书
2016教师廉洁从教心得体会
2016/01/13 职场文书