繁体   English   中英

为什么使用新的Date()的此Javascript函数只能运行一次?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM