
JS方法
html部分
<div class="clock"> <i></i> 天 <i></i> : <i></i> : <i></i> 后截止统计 </div>
css部分
.clock{
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;
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;
可能方法还是比较愚钝的,希望可以给出更好的答案!