ObjectifyJavaScript-如何多次运行Javascript函数
我已经编写了一个简单的Javascript函数(Curteouty of),它创建了一个倒计时计时器 当我运行它时,它工作正常,但我希望页面上有多个计时器 当我将函数放在另一个div中时,我会在屏幕上看到数字,但最后一个函数中只有一个真正倒计时 出于这样或那样的原因,它不想运行它,但它可以运行。我只需要它的多个实例ObjectifyJavaScript-如何多次运行Javascript函数,javascript,jquery-ui,dom,Javascript,Jquery Ui,Dom,我已经编写了一个简单的Javascript函数(Curteouty of),它创建了一个倒计时计时器 当我运行它时,它工作正常,但我希望页面上有多个计时器 当我将函数放在另一个div中时,我会在屏幕上看到数字,但最后一个函数中只有一个真正倒计时 出于这样或那样的原因,它不想运行它,但它可以运行。我只需要它的多个实例 非常感谢您提供的任何帮助,请提前感谢您在全局名称空间中构建它的方式使得合并两个计时器非常困难。相反,您应该只使用可重用的对象构造函数 函数倒计时(元素、时间){ this.eleme
非常感谢您提供的任何帮助,请提前感谢您在全局名称空间中构建它的方式使得合并两个计时器非常困难。相反,您应该只使用可重用的对象构造函数
函数倒计时(元素、时间){
this.element=元素;
这个时间=时间;
}
Countdown.time=函数(){
返回新日期().getTime()/1000;
};
Countdown.formatRemaining=函数(timeRemaining){
函数fillZero(n){
返回n<10?'0'+n:n.toString();
}
var天数=剩余时间/60/60/24 | 0;
var小时=剩余时间/60/60 | 0;
var分钟=剩余时间/60 | 0;
var秒=剩余时间| 0;
小时%=24小时;
分钟%=60;
秒%=60;
返回天数+'day'+(days==1?''s')+'+fillZero(小时)+':'+fillZero(分钟)+':'+fillZero(秒);
};
Countdown.prototype.update=函数(){
var timeRemaining=this.time+this.start-Countdown.time();
如果(剩余时间>0){
this.element.innerHTML=Countdown.formatRemaining(timeRemaining);
}否则{
this.element.innerHTML=“时间到了!”;
如果(这个计时器){
clearInterval(这个计时器);
this.timer=null;
}
}
};
Countdown.prototype.start=函数(){
var倒计时=此;
this.start=Countdown.time();
this.timer=setInterval(函数(){
countdown.update();
}, 1000);
这个.update();
};
它不起作用的原因是,JSFIDLE自动将其包装在一个onload
处理程序中。下面是解决问题的JSFIDLE:感谢您对JSFIDLE问题进行排序。你知道如何创建两个实例吗?是的,事实上,我正在做一个。谢谢minitech,我是javascript新手,我可以看到你在哪里实例化了这个对象。我希望它从一个php foreach循环运行,那么我会为循环中的每个元素分别实例化吗?或者我会把它们放在javascript文件中…@user866190:这是一个多功能类,您可以像以前一样使用它<代码>新的倒计时(document.getElementById(elementId),timeUnseconds.start()代码>,就在你做这件事的同一个地方。如果需要的话。但是,当您开始深入了解JavaScript时,您应该使用HTML类来完成这一点。
function Countdown(element, time) {
this.element = element;
this.time = time;
}
Countdown.time = function() {
return new Date().getTime() / 1000;
};
Countdown.formatRemaining = function(timeRemaining) {
function fillZero(n) {
return n < 10 ? '0' + n : n.toString();
}
var days = timeRemaining / 60 / 60 / 24 | 0;
var hours = timeRemaining / 60 / 60 | 0;
var minutes = timeRemaining / 60 | 0;
var seconds = timeRemaining | 0;
hours %= 24;
minutes %= 60;
seconds %= 60;
return days + ' day' + (days === 1 ? '' : 's') + ' ' + fillZero(hours) + ':' + fillZero(minutes) + ':' + fillZero(seconds);
};
Countdown.prototype.update = function() {
var timeRemaining = this.time + this.start - Countdown.time();
if(timeRemaining > 0) {
this.element.innerHTML = Countdown.formatRemaining(timeRemaining);
} else {
this.element.innerHTML = "Time's up!";
if(this.timer) {
clearInterval(this.timer);
this.timer = null;
}
}
};
Countdown.prototype.start = function() {
var countdown = this;
this.start = Countdown.time();
this.timer = setInterval(function() {
countdown.update();
}, 1000);
this.update();
};