问个js定时器的问题???

Q小猪猪Q 2018-02-06 11:29:12
;(function(window,document){
console.log(document)
var TimeCount = function(targetDom,options) {
if(!(this instanceof TimeCount)) return new timeCount(targetDom,options)
this.options = this.extend({
setTime: null,
d: null,
h: null,
m: null,
s: null
},options)
if((typeof targetDom) == "string") {
this.targetDom = document.getElementById(targetDom)
console.log(this.targetDom)
}else {
this.targetDom = targetDom
}
this.init()
}
TimeCount.prototype = {
init: function() {
this.cal()
},
extend: function(obj,obj2) {
for(var k in obj2) {
obj[k] = obj2[k]
}
return obj
},
cal: function() {
var _time = new Date(this.options.setTime).getTime()
var date = new Date().getTime()
if(_time < date) {
var error = '设置的时间必须大于当前时间!'
this.error(error)
return
}
if(this.options.d && this.options.h && this.options.m && this.options.s) {
setInterval(this.all(),1000) //为何不生效啊???
}else {
var error = '缺少参数!'
this.error(error)
}
},
error: function(error) {
alert(error)
return error
},
all: function() {
var _time = new Date(this.options.setTime).getTime()
var date = new Date().getTime()
var end = _time - date
if (end>=0) {
d = Math.floor(end/1000/60/60/24);
h = Math.floor(end/1000/60/60%24);
m = Math.floor(end/1000/60%60);
s = Math.floor(end/1000%60);
//赋值
console.log(s)
document.getElementById(this.options.d).innerHTML = d+"天";
document.getElementById(this.options.h).innerHTML = h+"时";
document.getElementById(this.options.m).innerHTML = m+"分";
document.getElementById(this.options.s).innerHTML = s+"秒";
}else {
console.log(this.targetDom)
this.targetDom.innerHTML = '<p>活动已结束,感谢你的参与!</p>'
}
}
}

window.TimeCount = TimeCount

})(window,document)


每隔1秒钟应该计算一次,,

js该怎么写啊?? 现在我非要手动每次刷新一次浏览器才计算一次


html


<html>
<head>
<meta charset="UTF-8">
<title>js简单时分秒倒计时</title>
<script src="index.js"></script>
<script type="text/javascript">
window.onload = function() {
new TimeCount('box',{
setTime: '2018/2/6 11:30',
d: '_d',
h: '_h',
m : '_m',
s: '_s'
})
}
</script>
</head >
<body>
<div id="box">
<span id="_d">00</span>
<span id="_h">00</span>
<span id="_m">00</span>
<span id="_s">00</span>
</div>
</body>
</html>
...全文
262 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
清汤泡饭 2018-02-06
  • 打赏
  • 举报
回复
代码太长了,懒得看 ,建议最好的精简和排版下。
似梦飞花 2018-02-06
  • 打赏
  • 举报
回复
setInterval(function(){this.all()},1000)试试
帅凯凯 2018-02-06
  • 打赏
  • 举报
回复
var self = this;
					 setInterval(function(){
			        	self.all();
			        },1000);
https://www.cnblogs.com/souvenir/p/4977407.html 这里面说好像是setInterval作用域的问题。。。对这块也很模糊,有大神继续解答下吗? 为什么self.all()不管用,加个function就管用了
Q小猪猪Q 2018-02-06
  • 打赏
  • 举报
回复
为何已经设置了定时器但是这里的this.all方法只会调用一次,bind this或者用闭包肯定是没问题的,就是为何这样写定时器相当于不生效一样

87,901

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧