[英]Why does this Javascript function using new Date() only runs once?
我编写了此函数,该函数返回一个日期字符串,它运行一次,然后出现错误,提示“ ... clientTime()不是函数...”,我试图将日期设置为空(如果它已经存在)。 我不确定该怎么办。
抱歉,我在这里没有显示出来,但是变量在外部被声明为全局变量。
function clientTime() {
var now = new Date();
dd = now.getDate();
MM = now.getMonth()+1;
if(MM < 10) {
MM = '0'+MM.toString();
}
yyyy = now.getFullYear();
hh = now.getHours();
mm = now.getMinutes();
if(mm < 10) {
mm = '0'+mm.toString();
}
ampm = "";
// determine if it's currently am or pm
if(hh < 12) {
hh = '0'+hh.toString();
ampm = "AM";
}else if(hh > 12) {
ampm = "PM";
}
// modify hours change from 24 to 12 format
switch (hh) {
case (12):
hh = 00;
case (13):
hh = 01;
case (14):
hh = 02;
case (15):
hh = 03;
case (16):
hh = 04;
case (17):
hh = 05;
case (18):
hh = 06;
case (19):
hh = 07;
case (20):
hh = 08;
case (21):
hh = 09;
case (22):
hh = 10;
case (23):
hh = 11;
}
return(MM+'/'+dd+'/'+yyyy+' '+hh+':'+mm+' '+ampm);
}
function alertClientTime() {
alert(clientTime());
}
alertClientTime();
如果我想要该函数的返回值说clientTime = clientTime(),是否无效?
这不是无效的 ,但是它会用结果覆盖函数引用,这意味着在下一遍它不再是函数,并且您得到了所描述的错误。 因此,只需为要分配的变量使用其他名称即可:
var theTime = clientTime();
应该能按预期工作。
快速提示:
hh % 12
(余数运算符)产生的结果与整个开关盒相同:)
您可能在代码的某处覆盖了函数,请检查函数名是否重复或在其他地方调用了该函数。 如果我采用这段代码,则可以正常工作。 您也可以缩短代码,但是@Chris Nordqvist在我之前说过
编辑:如果我经常使用日期,我建议使用moment.js ,它非常有用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.