参考
https://my.oschina.net/senit/blog/743163
和本地localstorage置换时间的验证码计时器
拆除jquery做到不依赖第三方库
for example
在react中使用
const codeTimer = function (el:HTMLElement, wait:number) {this.el = elthis.wait = waitthis.load = () => {//获取缓存中的值let timers = this.getLocalDelay();if (timers.lastname == null || timers.lastname == 0) {this.el.innerHTML = '获取验证码'this.wait = waitreturn;}if (timers.lastname > 0) {this.el.style.color = 'gray'}this.el.innerHTML = "剩余(" + timers.lastname + ")秒"let timer = setInterval( () => {if (timers.lastname > 0) {timers.lastname--;this.el.style.color = 'gray'this.el.innerHTML = "剩余(" + timers.lastname + ")秒"this.setLocalDelay(timers.lastname);} else {clearInterval(timer);this.el.style.color = 'orange'this.el.innerHTML = '获取验证码'this.wait = wait}}, 1000);}this.time = () => {this.setLocalDelay(this.wait);if (this.wait == 0) {this.el.style.color = 'orange'this.el.innerHTML = '获取验证码'this.wait = waitthis.setLocalDelay(this.wait);} else {let timer = setInterval( () => {console.log(el);if (this.wait > 0) {this.wait--;this.el.style.color = 'gray'this.el.innerHTML = "剩余(" + this.wait + ")秒"this.setLocalDelay(this.wait);} else {clearInterval(timer);this.el.style.color = 'orange'this.el.innerHTML = '获取验证码'this.wait = wait}}, 1000);}}this.setLocalDelay = (time) => {//location.href作为页面的唯一标识,可能一个项目中会有很多页面需要获取验证码。localStorage.setItem("lastname" + location.href, time);}this.getLocalDelay = () => {const LocalDelay: any = {};LocalDelay.lastname = localStorage.getItem("lastname" + location.href);return LocalDelay;}}// 使用let mCodeTimerexport default class Login extends Component<LoginProps> {componentDidMount() {const btn = document.querySelector('#get_verify_code_btn') as HTMLElementmCodeTimer = new codeTimer(btn, 10)mCodeTimer.load()}render() {<span onClick={() => {mCodeTimer.time()}}id="get_verify_code_btn">获取验证码</span>}}
