JS小福利 —— 实时更新的页面小时钟
今天小女刚学会了一个好玩的小玩意儿~~特来跟大家分享一下~~~
这是一个有趣的时钟显示程序,可以进行实时的年月日、星期、时分秒更新,有了这组小代码,以后可以作为日期插件应用在大型的JS代码中哦~~
积少成多,时间是一点点省下来的,效率也是慢慢提高的。
好了,废话不多说了,马上进入正题(*^▽^*)
首先,为了使页面在固定位置定时刷新,我需要在body中写入一个div,代码结构如下:
<body>
<div id="div"> </div>
<script type="text/javascript">
// JS代码
</script>
</body>
这个小程序中,重点使用JS内置对象中的Date日期类对象编写代码,以下是一些概念性的知识,稍微提一下:
1、new Date() :返回当前最新时间; new Date("2017,12,31,12:34:12"); 返回指定时间。
2、常用方法:
① .getFullYear():获取年份。
② .getMonth():获取月份。
③ .getDate(); 获取一个月中的第几天
③ .getDay(); 获取一个周中的第几天 0-表示周天。时分秒以此类推...
接下来,我们首先需要声明一个函数,函数名为getTime(),然后在函数体中进行年月日、时分秒的声明与调用,代码如下:
function getTime(){
var dates = new Date(); // dates返回当前最新时间。
var year = dates.getFullYear(); //获取年份
var month = dates.getMonth(); //获取月份
var da = dates.getDate(); //获取日期
var day = dates.getDay(); //获取星期几
var hours = dates.getHours(); //获取小时
var min = dates.getMinutes(); //获取分钟
var sec = dates.getSeconds(); //获取秒
//week采用数组的形式,在div.innerText赋值过程中,提高了代码的简洁性。
var weeks = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
// 由于时分秒存在一位数的情况,此时前面需要添“0”
hours = hours <10 ? "0"+ dates.getHours() : dates.getHours() ;
min = min < 10 ? "0" + dates.getMinutes() : dates.getMinutes();
sec = sec <10 ? "0"+ dates.getSeconds() : dates.getSeconds() ;
var div = document.getElementById("div");
div.innerText = year+"年"+(month+1)+"月"+da+"日"+" "+weeks[day]+" "+hours+":"+min+":"+sec;
setTimeout(arguments.callee,1000); // 每1s回调一次函数 法一
}
通过以上代码,函数体部分已经敲完了,只剩下调用getTime()函数。
但是由于每次刷新页面都会出现一次小卡顿,时间更新延迟,导致用户的体验效果不佳。
作为改进,我在函数体外部紧接着写了一下代码:
window.onload = function(){
getTime();
} //这是一个窗口加载完毕函数。作用:在每次刷新窗口,窗口加载完成后主动调用一次getTime函数,基本消除了刷新时的小卡顿。
到这里,我们这个实时页面刷新的小程序的效果就可以完全实现了。
上述延时方法采用的是递归调用,由于时间函数本身就是一个死循环,每执行完一次,间隔1s后就回调一次函数,可以实现时间的每秒更新。
还有第二种方法,也是大家普遍第一时间想到的方法——定时器,代码如下:
setInterval(getTime,1000); // 法二 采用定时器 这行代码是需要调用getTime()函数的,因而写在了函数体外。
完整代码如下,留给大家作参考:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Time</title>
</head>
<body>
<div id="div"></div>
<script type="text/javascript">
function getTime(){
var dates = new Date(); // dates返回当前最新时间。
var year = dates.getFullYear(); //获取年份
var month = dates.getMonth(); //获取月份
var da = dates.getDate(); //获取日期
var day = dates.getDay(); //获取星期几
var hours = dates.getHours(); //获取小时
var min = dates.getMinutes(); //获取分钟
var sec = dates.getSeconds(); //获取秒
var weeks = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]; hours = hours <10 ? "0"+ dates.getHours() : dates.getHours() ;
min = min < 10 ? "0" + dates.getMinutes() : dates.getMinutes();
sec = sec <10 ? "0"+ dates.getSeconds() : dates.getSeconds() ; var div = document.getElementById("div");
div.innerText = year+"年"+(month+1)+"月"+da+"日"+" "+weeks[day]+" "+hours+":"+min+":"+sec;
// setTimeout(arguments.callee,1000); // 每1s回调函数 法一
}
setInterval(getTime,1000); // 法二 定时器
window.onload = function(){
getTime();
}
</script>
</body>
</html>
如果觉得好玩,可以动手敲敲试试看,自己敲出来的感觉就是不一样!
另附一丢丢CSS代码(纯属娱乐):
<style type="text/css">
#div1{
width: 800px;
height: 100px;
text-align: center;
line-height: 50px;
font-size: 28px;
font-family: "微软雅黑",sans-serif;
position: absolute; /*时钟div在页面中水平垂直居中*/
top: 50%;
margin-top: -50px;
left: 50%;
margin-left: -400px;
}
</style>
由于没有细致的去写CSS代码,页面显得很简陋,以后有机会我会对页面进行美化的,到时候找机会分享给大家~~
小女很用心写的,如果觉得有兴趣,欢迎收藏呦~~蟹蟹~~~
JS小福利 —— 实时更新的页面小时钟的更多相关文章
- IDEA不能实时更新jsp页面的问题
第一步: 第二步 第三步: 将这三个选项 改成
- 解决 三星Note3 桌面小部件不实时更新/不刷新 的问题
机型及问题描述:我的是三星note3 (国行 SM-N9008V),已ROOT,安装了LBE安全大师.在桌面小部件中,有些不会实时更新.比如有 滴答清单(办过的事项无法勾选),百度云音乐(歌曲播放更新 ...
- React.js 小书 Lesson20 - 更新阶段的组件生命周期
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson20 转载请注明出处,保留原文链接和作者信息. 从之前的章节我们了解到,组件的挂载指的是将组件 ...
- ueditor的工具栏显示乱码解决方法 小问题.. 是你的页面编码与语言包js编码不符所导致的
ueditor的工具栏显示乱码解决方法 小问题.. 是你的页面编码与语言包js编码不符所导致的解决方法:用记事本将ueditor\..\lang\zh-cn\zh-cn.js打开,然后保存为ANSI ...
- 微信小程序左右滑动切换页面示例代码--转载
微信小程序——左右滑动切换页面事件 微信小程序的左右滑动触屏事件,主要有三个事件:touchstart,touchmove,touchend. 这三个事件最重要的属性是pageX和pageY,表示X, ...
- 什么?小程序实时语音识别你还在痛苦的对接科大讯飞?百度Ai识别?
前言 微信小程序,说不上大火,但是需求还是不少的.各大企业都想插一足 于是前端同学就有事情做了. 需求 我需要录音 我边说话边识别,我要同声传译,我要文字转语音,还要萝莉音 我:??? 正文 一开始, ...
- 微信小程序客服消息开发实战:实时在手机上接收小程序客服消息通知,以及在手机上回复
在微信小程序开发中,可以非常方便的集成客服功能,只需要一行代码便可以将用户引导至客服会话界面.这行代码就是: <button open-type="contact" bind ...
- web页面实时更新页面的原理--WebSocket
原文:https://www.jianshu.com/p/8f956cd4d42b angular-cli启动的项目也可以自动刷新,底下应该也是应用的websocket的原理. ----------- ...
- 小程序webview跳转页面后没有返回按钮完美解决方案
随着小程序越来越火爆,使一个产品如果只有公众号H5页面和APP显得不怎么完美,总感觉不搭上小程序这趟流量车,就会少了点什么,心里别扭地很.在此驱动下,我所在公司也决定赶紧上车. 但是,如果要按照小程序 ...
随机推荐
- 学习笔记TF026:多层感知机
隐含层,指除输入.输出层外,的中间层.输入.输出层对外可见.隐含层对外不可见.理论上,只要隐含层节点足够多,只有一个隐含层,神经网络可以拟合任意函数.隐含层越多,越容易拟合复杂函数.拟合复杂函数,所需 ...
- 使用Spring boot + jQuery上传文件(kotlin)
文件上传也是常见的功能,趁着周末,用Spring boot来实现一遍. 前端部分 前端使用jQuery,这部分并不复杂,jQuery可以读取表单内的文件,这里可以通过formdata对象来组装键值对, ...
- 如何得到iPhone手机的UUID
背景 测试ad-hoc打包方式打出来的包,必须在证书里面配置手机的uuid才能安装. 这样就需要获取iPhone手机的uuid来进行证书配置 一般来说iPhone手机可以安装通过Apple发布的软件. ...
- BI服务器配置与客户端情况
1. BI描述 FineBI是一款纯B/S端的商业智能分析服务平台:支持通过web应用服务器将其部署在服务器上,提供企业云服务器.用户端只需要使用一个浏览器即可进行服务平台的访问和使用.因此在配置使用 ...
- 由于用mpu6050模块,所以要用上i2c通信原理。
i2c通信原理 i2c总线只有两根双向信号线,一根是数据线SDA,一根是时钟线SCL. 每个接到i2c总线上的器件都有唯一的地址,主机与其他器件之间的数据传送可以是由主机发送给其他器件.主机为发送器, ...
- (转)Oracle中的rownum,ROWID的 用法
场景:在书写oracle的sql语句时候,如果语句不存在主键,需要删除几条重复的记录,这个时候如果不知道oracle中的伪列,就需要把所有的重复记录先删除,再插入.这样做好麻烦,可以通过伪列来定位记录 ...
- iOS开发实战-基于SpriteKit的FlappyBird小游戏
写在前面 最近一直在忙自己的维P恩的事情 公司项目也是一团乱 于是...随手找了个游戏项目改了改就上线了,就当充数了. SpriteKit简介 SpriteKit是iOS 7之后苹果推出的2D游戏框架 ...
- tcp netstat用法 TIME_WAIT状态解析 MTU以及MSS
带着问题写博客 问题1:使用netstat查看有源TCP连接的状态时,经常会看到established状态,那么还有哪些状态,这些状态是如何变化的呢? 问题2:TIME_WAIT状态存在的必要? 问题 ...
- 一步一步深入理解Dijkstra算法
先简单介绍一下最短路径: 最短路径是啥?就是一个带边值的图中从某一个顶点到另外一个顶点的最短路径. 官方定义:对于内网图而言,最短路径是指两顶点之间经过的边上权值之和最小的路径. 并且我们称路径上的第 ...
- <EffectiveJava>读书笔记--02泛型数组
1, java中可以申明泛型类型的数组引用; 2, 但是不能实例化一个泛型数组对象; 3, 针对第二点, 可以曲线救国, 实例化一个Object数组, 再进行类型强转; 见代码如下: public c ...