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脚本1k大小的3D玫瑰效果
Feb 11 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
Apr 16 Javascript
js 三级关联菜单效果实例
Aug 13 Javascript
原生js实现焦点轮播图效果
Jan 12 Javascript
iscroll.js滚动加载实例详解
Jul 18 Javascript
详解angularjs的数组传参方式的简单实现
Jul 28 Javascript
bootstrap table服务端实现分页效果
Aug 10 Javascript
详解基于vue-cli3快速发布一个fullpage组件
Mar 08 Javascript
javascript中this的用法实践分析
Jul 29 Javascript
基于JavaScript实现贪吃蛇游戏
Mar 16 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
Jul 19 Javascript
js实现盒子拖拽动画效果
Aug 09 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
咖啡与水的关系
2021/03/03 冲泡冲煮
php笔记之常用文件操作
2010/10/12 PHP
Yii2.0框架模型多表关联查询示例
2019/07/18 PHP
JavaScript中number转换成string介绍
2014/12/31 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
2015/12/23 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
2016/08/29 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
2018/10/12 Javascript
localstorage实现带过期时间的缓存功能
2019/06/28 Javascript
[07:39]第一届亚洲邀请赛回顾视频
2017/02/14 DOTA
python创建进程fork用法
2015/06/04 Python
Phantomjs抓取渲染JS后的网页(Python代码)
2016/05/13 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
python使用turtle库绘制树
2018/06/25 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
Python利用Scrapy框架爬取豆瓣电影示例
2020/01/17 Python
python db类用法说明
2020/07/07 Python
Python接口自动化测试的实现
2020/08/28 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
2020/12/07 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
用CSS3来实现社交分享按钮
2014/11/11 HTML / CSS
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
前台接待岗位职责
2013/12/03 职场文书
运动会入场词50字
2014/02/20 职场文书
生态养殖创业计划书
2014/05/06 职场文书
趣味运动会策划方案
2014/06/02 职场文书
法人代表授权委托书范文
2014/09/10 职场文书
2015年教师党员公开承诺书
2015/01/22 职场文书
天气温馨提示语
2015/07/14 职场文书
小学生禁毒教育心得体会
2016/01/15 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书
只用20行Python代码实现屏幕录制功能
2021/06/02 Python
利用python进行数据加载
2021/06/20 Python
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android