在一个表中实现多个倒计时的Javascript

在一个表中实现多个倒计时的Javascript,javascript,html,timer,Javascript,Html,Timer,我尝试在一个表中创建多个倒计时计时器,它将依赖变量来设置剩余时间。目前没有结果输出到页面,我不知道为什么 理想情况下,应显示4个倒计时计时器 var表; 表=(“”); 对于(i=0;i

我尝试在一个表中创建多个倒计时计时器,它将依赖变量来设置剩余时间。目前没有结果输出到页面,我不知道为什么

理想情况下,应显示4个倒计时计时器

var表;
表=(“”);
对于(i=0;i<4;i++){
表+=(“”);
表+=(“剩余时间:”);
表+=(“”);
表+=(“”);
表+=(“”);
表+=(“”);
表+=(“”);
}
表+=(“”);
document.getElementById('listinglist')。innerHTML=table;
var yr=2016年,
m=2,
d=3,
hr=4,
最小值=5;
对于(i=0;i<4;i++){
倒计时(年、米、丁、小时、分钟、一);
}
var年=2010年;
var月=12;
var日=21;
var小时=18;
var分钟=38;
var tz=-5;
var montharray=新数组(“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”);
功能倒计时(年、米、日、小时、分钟){
年份=年;
月=m;
天=d;
小时=小时;
分钟=分钟;
var today=新日期();
var today=today.getYear();
如果(今天<1000){
今天+=1900;
}
var todaym=today.getMonth();
var todayd=today.getDate();
var todayh=today.getHours();
var todaymin=today.getMinutes();
var todaysec=today.getSeconds();
var todaystring1=montharray[todaym]+“+todayd+”,“+Todaydy+”+“+Todaydh+”:“+todaymin+”:“+todaysec;
var todaystring=Date.parse(todaystring1)+(tz*1000*60*60);
var futurestring1=(蒙塔雷[m-1]+“+d+”,“+yr+”+“+hr+”:“+min);
var futurestring=Date.parse(futurestring1)-(today.getTimezoneOffset()*(1000*60));
var dd=未来字符串-今天字符串;
var dday=数学楼层(dd/(60*60*1000*24)*1);
var dhour=数学地板((dd%(60*60*1000*24))/(60*60*1000)*1);
var dmin=数学楼层((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1);
var dsec=数学地板(((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1);
document.getElementById('dday')。innerHTML=dday;
document.getElementById('dhour')。innerHTML=dhour;
document.getElementById('dmin')。innerHTML=dmin;
document.getElementById('dsec')。innerHTML=dsec;
设置超时(“倒计时(年、月、日、小时、分钟)”,1000;
}

脚本中几乎没有问题,比如在创建
montharray
之前调用倒计时函数,没有使用
getElementById
中的
i
部分等

var表;
表=(“”);
对于(i=0;i<4;i++){
表+=(“”);
表+=(“剩余时间:”);
表+=(“”);
表+=(“”);
表+=(“”);
表+=(“”);
表+=(“”);
}
表+=(“”);
document.getElementById('listinglist')。innerHTML=table;
var yr=2016年,
m=2,
d=3,
hr=4,
最小值=5;
var年=2010年;
var月=12;
var日=21;
var小时=18;
var分钟=38;
var tz=-5;
var montharray=新数组(“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”);
//应在设置montharray后调用
对于(i=0;i<4;i++){
倒计时(年、米、丁、小时、分钟、一);
}
功能倒计时(年、米、日、小时、分钟、一){
年份=年;
月=m;
天=d;
小时=小时;
分钟=分钟;
var today=新日期();
var today=today.getYear();
如果(今天<1000){
今天+=1900;
}
var todaym=today.getMonth();
var todayd=today.getDate();
var todayh=today.getHours();
var todaymin=today.getMinutes();
var todaysec=today.getSeconds();
var todaystring1=montharray[todaym]+“+todayd+”,“+Todaydy+”+“+Todaydh+”:“+todaymin+”:“+todaysec;
var todaystring=Date.parse(todaystring1)+(tz*1000*60*60);
var futurestring1=(蒙塔雷[m-1]+“+d+”,“+yr+”+“+hr+”:“+min);
var futurestring=Date.parse(futurestring1)-(today.getTimezoneOffset()*(1000*60));
var dd=未来字符串-今天字符串;
var dday=数学楼层(dd/(60*60*1000*24)*1);
var dhour=数学地板((dd%(60*60*1000*24))/(60*60*1000)*1);
var dmin=数学楼层((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1);
var dsec=数学地板(((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1);
//需要在id中使用i来定位元素
document.getElementById('dday'+i).innerHTML=dday;
document.getElementById('dhour'+i).innerHTML=dhour;
document.getElementById('dmin'+i).innerHTML=dmin;
document.getElementById('dsec'+i).innerHTML=dsec;
//需要按传递给此函数的方式传递参数
setTimeout(倒计时绑定(this,yr,m,d,hr,min,i),1000);
}

末尾的大括号是否过多?打开浏览器控制台,查看出现了哪些错误。它显示了未捕获的TypeError:无法将文档的属性“innerHTML”设置为null。getElementById('dday')。innerHTML=dday;它显示了现在剩下的时间。然而,由于某些原因,其余部分没有显示。这段代码是否可能接受4个不同的计时器?到目前为止,它们都是一样的。我以为第二个循环可以做到这一点,但到目前为止还没有。非常感谢你的帮助。但是,如果我有不同的年、月和日期的数字,我不需要循环吗?在我创建表的地方,我实际上从xml文件中读取数据。然后也将其放入表中。“表创建区域中的循环也用于加载xml的每个条目。@JianYA那么您需要使用一个循环,但要传递的值应该来自xml值这是我在原始代码中使用的同一个循环吗?”@阿伦·p·约翰尼