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分别实现倒计时(天时分秒)的更多相关文章

  1. JS倒计时——天时分秒

      HTML代码: <div id="times_wrap" class="time_num">    距离结束时间:     <div cl ...

  2. JQ倒计时天时分秒

    <div id="times_wrap" class="time_num"> 距离现在时间: <div class="time_w& ...

  3. js倒计时天时分秒[转]

    <script language="JavaScript"> <!-- // function getQueryString(name) { var reg =n ...

  4. JS时间处理,获取天时分秒

    //获取时间的天,小时,分钟,秒 function ToTime(second) { second = second / ; var result ; ) % ; ) % ; * )); ) { re ...

  5. JS时间处理,获取天时分秒。以及浏览器出现的不兼容问题

    //获取时间的天,小时,分钟,秒 function ToTime(second) { second = second / ; var result ; ) % ; ) % ; * )); ) { re ...

  6. JS - The react framework

    这几天因为赶时间 , 所以理解上可能有许多的误差 , 如果你不幸点进来了 , 请不要看我的代码 , 这几天我会重新修改 , 然后把错误的不足的 全部修正一下 . /hwr/src/index.js i ...

  7. React Native之倒计时组件的实现(ios android)

    React Native之倒计时组件的实现(ios android) 一,需求分析 1,app需实现类似于淘宝的活动倒计时,并在倒计时结束时,活动也结束. 2,实现订单倒计时,并在倒计时结束时,订单关 ...

  8. D3.js(v3)+react框架 基础部分之数据绑定及其工作过程与绑定顺序

    数据绑定: 将数据绑定到Dom上,是D3最大的特色.d3.select和d3.selectAll返回的元素的选择集.选择集上是没有数据的. 数据绑定就是使被选择元素里“含有”数据. 相关函数有两个: ...

  9. immutable.js 在React、Redux中的实践以及常用API简介

    immutable.js 在React.Redux中的实践以及常用API简介 学习下 这个immutable Data 是什么鬼,有什么优点,好处等等 mark :  https://yq.aliyu ...

随机推荐

  1. Controller怎么接收Ajax传来的data

    var json = { "VendorId": strVendorId, "VendorName": strVendorName, "Remark& ...

  2. PHP 反序列化漏洞入门学习笔记

    参考文章: PHP反序列化漏洞入门 easy_serialize_php wp 实战经验丨PHP反序列化漏洞总结 PHP Session 序列化及反序列化处理器设置使用不当带来的安全隐患 利用 pha ...

  3. combogrid设置多选,并获取多选的值

    1.combogrid设置多选 1.添加该属性 multiple: true, 2.添加该列 {field:'ck',checkbox:true}, 2.获取多选的值 var arr = $(&quo ...

  4. springboot --- 之SSM框架整合

    1.pom依赖: 即:spring-boot的基本jar ---- 内置springmvc和spring Thymeleaf jar 热部署 jar ---方便二次加载 ctrl+f9再次编译 Myb ...

  5. java中实现无限层级的树形结构

    本文展示了两个实现方法的代码.两个代码的实现方法不同,代码2更为简单. 先看一下最后实现的结果: 最后结果-json 代码1: 实现过程: 1.传入一段json字符串 2.将字符串转换成对象存入节点列 ...

  6. 坚果云如何使用二次验证码/谷歌身份验证器/两步验证/虚拟MFA?

    一般步骤:登陆后点邮箱名——安全设置——开通两步验证,用二次验证码微信小程序绑定即可 具体步骤见链接  坚果云如何使用二次验证码/谷歌身份验证器/两步验证/虚拟MFA? 二次验证码小程序于谷歌身份验证 ...

  7. APP自动化 -- 框架

    一.框架源码 https://github.com/jiangnan27/Autotest_APP_Open 二.框架环境 python3 + appium1.15.3 + pytest5.3.5 三 ...

  8. 一个edit的学习笔记

    https://blog.csdn.net/woshizoe/article/details/51555396

  9. Java线程-- 线程池

    1.线程池概念 线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源. 为什么要使用线程池? 在java中,如果每个请求到达就创 ...

  10. SQL Server跟踪工具Profiler的使用

    一.什么是SQL Profiler SQL Server Profiler 是一个功能丰富的界面,用于创建和管理跟踪并分析和重播跟踪结果. 事件保存在一个跟踪文件中,稍后试图诊断问题时,可以对该文件进 ...