JavaScript试图为html制作时钟,可以';不说什么';它坏了

JavaScript试图为html制作时钟,可以';不说什么';它坏了,javascript,html,getelementbyid,clock,Javascript,Html,Getelementbyid,Clock,JavaScript试图为html制作一个时钟,但无法判断什么坏了。 这个js时钟在Sharepoint网站上运行得很好,但我试图在本地文件上实现它,但不知怎么的,它在一路上坏了。我正在尝试使用getElementById查找,并将文本更改为当前时间。我不知道到底是什么坏了。 谢谢你看。 更新:我试图整理代码,现在它不是一个空白的,而是给我一个false输出。所以我想你可以说已经取得了进展。我仍然不知道到底什么东西坏了,但任务还在继续 更新2:多亏了StackSlave,做了一些格式化,下面是一

JavaScript试图为html制作一个时钟,但无法判断什么坏了。 这个js时钟在Sharepoint网站上运行得很好,但我试图在本地文件上实现它,但不知怎么的,它在一路上坏了。我正在尝试使用
getElementById
查找
,并将文本更改为当前时间。我不知道到底是什么坏了。 谢谢你看。 更新:我试图整理代码,现在它不是一个空白的
,而是给我一个
false
输出。所以我想你可以说已经取得了进展。我仍然不知道到底什么东西坏了,但任务还在继续
更新2:多亏了StackSlave,做了一些格式化,下面是一个例子,它在Chrome中运行得很好,但是JSFIDLE不太喜欢它。感谢所有在这一努力中帮助我的人

window.addEventListener('load',Elements,false);
addEventListener('load',getElement,false);
window.addEventListener('load',worldClock,false);
函数元素(){
getElement(“Zulu”,世界时钟(0,“NODST”);
getElement(“纽约”,世界时钟(-9,“北美”);
设置超时(元素,1e3);
}
函数getElement(Id,时间){
var a=document.getElementById(Id);
如果(a)
a、 innerHTML=时间;
否则{
返回
}
}
功能世界时钟(偏移、时区){
var-common=0;
a=新日期(新日期().getTimezoneOffset()*6e4);
getDate=a.getDate();
getMonth=a.getMonth();
getYear=a.getYear();
返回a.getYear<1e3&(a.getYear+=1900);
monthNames=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”],
天数=[“31”、“28”、“31”、“30”、“31”、“30”、“31”、“31”、“30”、“31”、“30”、“31”、“30”、“30”、“31”、“30”、“31”],
getYear%4==0&&(天数=[“31”、“28”、“31”、“30”、“31”、“30”、“30”、“31”、“30”、“31”、“31”、“31”、“31”),
getYear%100==0&&getYear%400!=0&(天数=[“31”、“28”、“31”、“30”、“31”、“30”、“31”、“30”、“31”、“30”、“31”),
w=0,
偏移量!=0&&偏移量%1!=0&&(w=偏移量%1*60),
l=a.getMinutes()+w,
l>59?(e=a.getHours()+数学楼层(n)+1,
l-=60:e=a.getHours()+数学楼层(n),
y=a.getSeconds(),
e>=24&&(e=e-24,
s-=-1),
e<0&(e-=-24,
s-=1),
e<10&(e=”“+e),
l<10&(l=“0”+1),
y<10&(y=“0”+y),
s天[0]&&(s=1,
o=11?(o=0,
getYear-=1):o-=1),
t==“NODST”&(c=0),
t==“NAmerica”&&(u=新日期(),
i=新日期(),
u、 设定月(2),
u、 设定时间(2),
u、 设定日期(13),
f=u.getDay(),
f!=0?u.setDate(8-f):u.setDate(1),
i、 设定月(9),
i、 设定时间(1),
i、 设定日期(31),
f=i.getDay(),
i、 设定日期(31-f),
r=新日期(),
r、 设定月(o),
r、 setYear(h),
r、 设定日期,
r、 设定时间(东),
r>=u&&r

纽约:
祖鲁:

在设置用作回调的超时时,从一开始就使用小写的“time”,它不是函数,而是返回值,因为“()”

如果我理解得很好,我应该:

 setTimeout(Time, 1e3);

也许它不足以让它工作,但它肯定足以让它不工作。

您的代码完全不可读,您肯定应该重新考虑您的变量命名和结构。略读有两件事:

  • 返回以逗号分隔的表达式列表不是返回列表。只返回列表中的最后一个值,因此
    worldClock
    将返回
    r>=u&&r
  • 您没有将对
    Time
    函数的引用传递给
    setTimeout
    ,而是传递函数调用的结果。您的意思是
    setTimeout(时间,1e3)
  • 函数名为
    Time
    ,您正在使用
    Time
    尝试
    setTimeout
    。JS区分大小写,请将函数重命名为
    time

但是,如果函数能够工作,我会感到惊讶,根据我的经验,不可读的代码是不可靠的代码。但是试试看,告诉我它是否有效!祝你好运

让我们保持简单:

/
/*css/external.css*/
html,正文{
框大小:边框框;填充:0;边距:0;
}
氢{
利润率:5px7px;
}
h2,h2+div{
显示:内联块;
}

简易钟
纽约:
祖鲁:

我像你说的那样更改了它,没有明显的效果。我没有说它会起作用。正如我第一眼看到的,变量“monthnames”和后面的所有内容都在return语句之后,返回的是一个布尔值(true/false),可能就是您在页面上看到的那个值。我想知道你是否真的需要那个晦涩难懂的worldClock函数来实现你想要的。我宁愿阅读Date的文档(例如),这段代码非常糟糕。它缩小了吗?我同意你的观点,因为它不可读,我拉的原始版本更糟。我更正了大小写,并且
setTimeout
正如您所说,它没有任何明显的效果。我将看看
函数worldClock
,并尝试对其进行排序。非常感谢@dev的帮助
 setTimeout(Time, 1e3);