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 相关文章推荐
js控制表单操作的常用代码小结
Aug 15 Javascript
JS JQUERY实现滚动条自动滚到底的方法
Jan 09 Javascript
Function.prototype.apply()与Function.prototype.call()小结
Apr 27 Javascript
正则表达式(语法篇推荐)
Jun 24 Javascript
JS绘制微信小程序画布时钟
Dec 24 Javascript
vue复合组件实现注册表单功能
Nov 06 Javascript
深入理解react-router 路由的实现原理
Sep 26 Javascript
Nuxt.js之自动路由原理的实现方法
Nov 21 Javascript
微信小程序与公众号卡券/会员打通的问题
Jul 25 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
Feb 06 Javascript
Vue 实现对quill-editor组件中的工具栏添加title
Aug 03 Javascript
原生JavaScript实现随机点名表
Jan 14 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
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
上海永华YH-R296(华普R-96)12波段立体声收音机的分析和打理
2021/03/02 无线电
谈谈PHP的输入输出流
2007/02/14 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
2019/10/10 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
用jquery中插件dialog实现弹框效果实例代码
2013/11/15 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
详解Javascript动态操作CSS
2014/12/08 Javascript
JavaScript从数组中删除指定值元素的方法
2015/03/18 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
2018/05/05 Javascript
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
Vue2 监听属性改变watch的实例代码
2018/08/27 Javascript
angular4 获取wifi列表中文显示乱码问题的解决
2018/10/20 Javascript
微信小程序自定义导航栏实例代码
2019/04/05 Javascript
浅谈Vue项目骨架屏注入实践
2019/08/05 Javascript
[03:16]DOTA2完美大师赛小组赛精彩集锦
2017/11/22 DOTA
使用Python3编写抓取网页和只抓网页图片的脚本
2015/08/20 Python
python事件驱动event实现详解
2018/11/21 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
numpy.array 操作使用简单总结
2019/11/08 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
家用个人磨皮机:Trophy Skin
2017/03/30 全球购物
电气专业推荐信范文
2013/11/18 职场文书
2014年毕业演讲稿范文
2014/05/13 职场文书
安全标兵事迹材料
2014/08/17 职场文书
中学教师暑期培训方案
2014/08/27 职场文书
人力资源部岗位职责
2015/02/11 职场文书
硕士学位申请报告
2015/05/15 职场文书
入党介绍人意见2015
2015/06/01 职场文书
一篇带你入门Java垃圾回收器
2021/06/16 Java/Android
Sql Server 行数据的某列值想作为字段列显示的方法
2022/04/20 SQL Server
生命的关键成分来自太空?陨石说是的
2022/04/29 数码科技