[先行者课程] -- 用js实现倒计时功能的业务逻辑
今天是2017年3月19号,周日,我们一起来学习“倒计时”这个前端“需求”。
一,看一下上周的作业,视差滚动的作业;
二,开始分享学习倒计时应用。
因为时间的关系它分成二次来讲,
今天,讲上半部分,就是它的js的业务逻辑的实现;
然后下周,讲它的reactJs的实现,还有在nodeJs里把它运行起来。其实就是,下周讲一些react + node
//==================
时间倒数,倒计时,意思 就是到未来还有多久。
就例如你问我,到月底还有几天?
我回答你,3月底是31号,现在是19号,到本月底还有12天。
如果你每隔一天问我一次,我会不断的回答你,
到本月底还有11天。
到本月底还有10天。
到本月底还有9天。
到本月底还有8天。
...
那么现在看来,时间倒数就是,
“以一定的时间间隔,来不断的输出,从当前时间到未来确定的某个时间点,
此二者的时间差”,
当然,这是我自己的理解,
也是我自己分析“实现时间倒数”这个需求,如何去实现的思路。
现在的前端页面,已经成为页面组件的搭建了。
单纯的纯手写页面结构与组件,有,但不多。
前端页面,已经成为“一棵前端组件的组件树”!
//==================
首先,生成当前日期的对象,new Date();
然后getFullYear获得表示当前的年份的4位数字,
然后再用new Date( year ,2,20),即date2
来获得指定日期的日期对象,也就是未来的某个时间点
然后想办法获得未来时间点,和当前日期的差。
(date2 - date)
很简单,用未来时间减去当前时间,就是此二者之间的差。
我们输出一下这个date对象,发现它是一个字符串,
“Mon Mar 20 2017 00:00:00 GMT+0800 (中国标准时间)”,
可能有同学不明白了,
这么二个字符串相减,结果怎么就是个毫秒呢?刚开始时我也不明白,
后来我想想,明白了,
首先,它们不是字符串,而是日期对象。里面包含着日期信息,和许多方法。
我们把这个日期对象用console.dir来打印看看,
它可以以“对象-属性”的方式来输出信息到控制台。
console.dir(date2);
在js里两个东西相减会隐式转换成数字,
那日期date对象转数字就是毫秒数,
说到这里,大家来看个小例子,刚才说了,
js里二个东西相减会隐式转成数字,日期对象也一样,
那我现在随便写二个对象,让它们相减看看,
function a(){
console.log('a')
}
function b(){
console.log('b')
}
var aa = new a;
var bb = new b;
console.dir(aa-bb);
// NaN
NaN并不意味着是一个数字,它的类型是数字。结果是一个NaN,
这说明对象相减都有隐式的转换
再往下就是把这个时间差的结果,由毫秒,转换为秒
var time = (date2 - date) / 1000;
然后是一个秒,分,时,天的换算,
无非是乘60再乘60,再乘24,,什么的一堆东西
最后输出一个倒计时结果,
然后为了不断重复输出,就用了 setInterval(...),来不断的重复执行。
这样一个倒计时,就实现了。
- 数据包络分析教程
- 用JAVA的DEA算法衡量社交媒体页面的流行度
- 如何构建智能反垃圾邮件的WordPress插件
- 【深入研究】使用RNN预测股票价格系列一
- 【深入研究】使用RNN预测股票价格系列二
- 教你用一行Python代码实现并行(附代码)
- 在美国国会图书馆标题表的SKOS上运行Apache Spark GraphX算法
- 【精选】破解波动性突破实盘系统
- 从程序员的角度看神经网络的激活功能
- 在线矩阵微积分工具,可以生成 Python/Latex 代码哦!
- 机器学习应用区块链系列(一)——如何开发一套自己的智能合约系统
- 使用Botkit和Rasa NLU构建智能聊天机器人
- 【量化投资】缠论面面观(附Python源码)
- 独家 | 教你用Q学习算法训练神经网络玩游戏(附源码)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 威胁事件告警分析技巧及处置(一)
- docker数据卷备份恢复以及配置桥接网络
- ES对磁盘的要求都有哪些,大部分你可能不知道
- docker通过模板创建镜像以及容器、仓库和数据管理
- Form表单类组件与Map地图组件
- 转录组分析 | 使用Hisat2进行序列比对
- 最后一个页面:构建电影详情页面
- 安装docker以及通过容器创建镜像
- 转录组分析 | 使用trim-galore去除低质量的reads和adaptor
- 设计模式之工厂方法模式
- Ubuntu上安装TensorFlow(python2.7版)
- 转录组分析 | fastqc进行质控与结果解读
- playbook管理配置文件
- 使用playbook安装nginx
- 第五个页面:更多电影页面