JS与React分别实现倒计时(天时分秒)

JS方法
html部分
<div class="clock">
<i></i>
天
<i></i>
:
<i></i>
:
<i></i>
后截止统计
</div>
css部分
.clock{
width: 13.7rem;
height: 1rem;
margin-top:31.42rem;
color: #666666;
font-size: 0.85rem;
line-height: 1rem;
}
.clock i{
background: #ED0007;
color: #FFF;
font-weight: bold;
width: 1.2rem;
height: 1.04rem;
line-height: 1.04rem;
text-align: center;
display: inline-block;
}
js部分
let clock = document.getElementsByClassName('clock');
setInterval(function(){
let nowtime = new Date();
let endtime = new Date(2020,9,1,0,0,0); //设定的截止日期是10月1日,注意 Date方法中的月份提前一个月
let num = endtime.getTime() - nowtime.getTime() //以number形式表示的时间戳之差
// 以下是计算分时秒的过程
let day = parseInt(num/(1000*60*60*24));
num %= 1000*60*60*24;
let hour = parseInt(num/(60*60*1000));
num %= 1000*60*60;
let minute = parseInt(num/(60*1000));
num %= 60*1000;
let second = parseInt(num/1000);
clock[0].children[0].innerHTML = day;
clock[0].children[1].innerHTML = hour;
clock[0].children[2].innerHTML = minute;
clock[0].children[3].innerHTML = second;
},100)
React方法
最大不同就是对dom元素的内容展示,间接转为对state的控制。
import React from 'react';
import ReactDOM from 'react-dom';
import './Clock.less'; class Clock extends React.Component {
constructor(props) {
super(props);
console.log(props)
this.state = {
day: 0,
hour: 0,
min: 0,
sec: 0,
isShow:true,
}
} componentDidMount () {
this.countClock();
} componentWillUnmount() {
clearTimeout(this.timer);
} countClock = ()=> {
this.timer = setInterval(() => {
var nowtime = new Date();
var endtime = new Date(2020,8,4,0,0,0); //设定的截止日期是10月1日
var num = endtime.getTime() - nowtime.getTime() //以number形式表示的时间戳之差
if(num<=0){
clearInterval(this.timer);
changeStatus();
this.setState({
day: 0,
hours: 0,
min: 0,
sec: 0,
isShow:false,
});
}else{
var day = parseInt(num/(1000*60*60*24));
num %= 1000*60*60*24;
var hour = parseInt(num/(60*60*1000));
num %= 1000*60*60;
var minute = parseInt(num/(60*1000));
num %= 60*1000;
var second = parseInt(num/1000);
this.setState({
day:day,
hour:hour,
min:minute,
sec:second,
isShow:true,
})
}
},100)
} render() {
const { day,hour,min,sec } = this.state;
return (
<div>
<i>{day}</i>
天
<i>{hour}</i>
:
<i>{min}</i>
:
<i>{sec}</i>
后截止统计
</div>
);
}
} export default Clock;
可能方法还是比较愚钝的,希望可以给出更好的答案!
JS与React分别实现倒计时(天时分秒)的更多相关文章
- JS倒计时——天时分秒
HTML代码: <div id="times_wrap" class="time_num"> 距离结束时间: <div cl ...
- JQ倒计时天时分秒
<div id="times_wrap" class="time_num"> 距离现在时间: <div class="time_w& ...
- js倒计时天时分秒[转]
<script language="JavaScript"> <!-- // function getQueryString(name) { var reg =n ...
- JS时间处理,获取天时分秒
//获取时间的天,小时,分钟,秒 function ToTime(second) { second = second / ; var result ; ) % ; ) % ; * )); ) { re ...
- JS时间处理,获取天时分秒。以及浏览器出现的不兼容问题
//获取时间的天,小时,分钟,秒 function ToTime(second) { second = second / ; var result ; ) % ; ) % ; * )); ) { re ...
- JS - The react framework
这几天因为赶时间 , 所以理解上可能有许多的误差 , 如果你不幸点进来了 , 请不要看我的代码 , 这几天我会重新修改 , 然后把错误的不足的 全部修正一下 . /hwr/src/index.js i ...
- React Native之倒计时组件的实现(ios android)
React Native之倒计时组件的实现(ios android) 一,需求分析 1,app需实现类似于淘宝的活动倒计时,并在倒计时结束时,活动也结束. 2,实现订单倒计时,并在倒计时结束时,订单关 ...
- D3.js(v3)+react框架 基础部分之数据绑定及其工作过程与绑定顺序
数据绑定: 将数据绑定到Dom上,是D3最大的特色.d3.select和d3.selectAll返回的元素的选择集.选择集上是没有数据的. 数据绑定就是使被选择元素里“含有”数据. 相关函数有两个: ...
- immutable.js 在React、Redux中的实践以及常用API简介
immutable.js 在React.Redux中的实践以及常用API简介 学习下 这个immutable Data 是什么鬼,有什么优点,好处等等 mark : https://yq.aliyu ...
随机推荐
- Java 分布式任务调度平台:PowerJob 快速开始+配置详解
本文适合有 Java 基础知识的人群 作者:HelloGitHub-Salieri 引言 HelloGitHub 推出的<讲解开源项目>系列. 项目地址: https://github.c ...
- C#/VB.NET 在Word中添加条码、二维码
本文介绍如何通过C# 和VB.NET代码实现在Word文档中添加条码和二维码.代码中将分为在Word正文段落中.页眉页脚中等情况来添加. 使用工具:Free Spire.Office for .NET ...
- Python Ethical Hacking - WEB PENETRATION TESTING(2)
CRAWING DIRECTORIES Directories/folders inside the web root. Can contain files or other directories ...
- javascript中的设计模式之发布-订阅模式
一.定义 又叫观察者模式,他定义对象间的依照那个一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将的到通知.在javascript中,我们一般用时间模型来替代传统的发布-订阅模式 二 ...
- linux root 与普通用户之间的切换
test@ubuntu:~$ su Password: root@ubuntu:/home/uu# 也可以是从root用户切换到普通用户.如果当前是root用户,那么切换成普通用户uu用以下命令:s ...
- 第四章 常用API(下)
4.1.String类 描述:该类代表字符串 构造方法: 方法 描述 public String() 初始化构造一个空白字符串 public String(char[] value) 通过字符数组初始 ...
- [C#.NET 拾遗补漏]06:单例模式实佳实践
大家好,这是[C#.NET 拾遗补漏]专辑的第 06 篇文章.今天讲讲大家熟悉的单例模式. 单例模式大概是所有设计模式中最简单的一种,如果在面试时被问及熟悉哪些设计模式,你可能第一个答的就是单例模式. ...
- 安装 kreas 2.2.4 版本问题
python 版本 3.6 不要使用 3.7 和 3.8 否则导致安装失败 tensorflow 使用 1.12.0 keras 使用 2.2.4 版本 pip install 包名 -i http: ...
- 如何使用k3OS和Argo进行自动化边缘部署?
本文转自边缘计算k3s社区 前 言 随着Kubernetes生态系统的发展,新的技术正在被开发出来,以实现更广泛的应用和用例.边缘计算的发展推动了对其中一些技术的需求,以实现将Kubernetes部署 ...
- HTML 布局 - 使用<div> 元素
网站布局 大多数网站会把内容安排到多个列中(就像杂志或报纸那样).高佣联盟 www.cgewang.com 大多数网站可以使用 <div> 或者 <table> 元素来创建多列 ...