2014-12-03 52 views
-2

我最近发了一篇文章,但我说了我的问题(错误)和东西,并删除它,所以我再次去。我需要一些javascript协助

好吧,我有一个学校项目的网站,这很匆忙,因为我们即将交付,我们只是添加一些视觉材料,使网站看起来更漂亮,更具吸引力,所以是的,它的作业/项目。因此,我去了一个时钟代码的地方,我设法开始工作,并且我没有完全理解它的每一点。 下面是代码:

tday =new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"); 
    tmonth=new Array("January","February","March","April","May","June","July","August","September","October","November","December"); 

    function GetClock(){ 
    d = new Date(); 
    nday = d.getDay(); 
    nmonth = d.getMonth(); 
    ndate = d.getDate(); 
    nyear = d.getYear(); 
    nhour = d.getHours(); 
    nmin = d.getMinutes(); 
    nsec = d.getSeconds(); 

    if(nyear<1000) nyear=nyear+1900; 

     if(nhour == 0) {ap = " AM";nhour = 12;} 
    else if(nhour <= 11) {ap = " AM";} 
    else if(nhour == 12) {ap = " PM";} 
    else if(nhour >= 13) {ap = " PM";nhour -= 12;} 

    if(nmin <= 9) {nmin = "0" +nmin;} 
    if(nsec <= 9) {nsec = "0" +nsec;} 


    document.getElementById('clockbox').innerHTML=""+tday[nday]+", "+tmonth[nmonth]+" "+ndate+", "+nyear+" "+nhour+":"+nmin+":"+nsec+ap+""; 
    setTimeout("GetClock()", 1000); 
    } 
    window.onload=GetClock; 

<h:body onload="updateClock(); setInterval('updateClock()', 1000)"> 
<h5 id="clockbox">x</h5> 

好吧,因为我与JavaScript的经验是很可怕的,我不明白的IF-句子,像什么1000和1900意味着这种情况的? AP从哪里来?在nmin和nsec中,我明白发生了什么,但无法解释...还有clockbox,在这种情况下innerHTML是什么?

我希望这篇文章和解释是更好..

+2

他们的意思是1000和1900.他们是数字。 ap是一个变量。 – 2014-12-03 22:39:59

+0

您应该考虑使用正确的缩进,这些单行程不会提高可读性。 – martijnn2008 2014-12-03 22:41:01

回答

0

setInterval('updateClock()', 1000)手段调用每1000毫秒updateClock()方法。

以下代码将24小时制表示法转换为12小时制表示法。

if(nhour == 0) { // if the current time is 00:xx 
    ap = " AM"; 
    nhour = 12; 
} else if(nhour <= 11) { // if it's before 12 
    ap = " AM"; 
} else if(nhour == 12) { // if the current time is 12:xx 
    ap = " PM"; 
} else if(nhour >= 13) { // if it's passed 12 
    ap = " PM"; 
    nhour -= 12; 
} 

要添加前导零,下面的代码:

if(nmin <= 9) { 
    nmin = "0" + nmin; 
} 
if(nsec <= 9) { 
    nsec = "0" + nsec; 
} 

注意,这些任务类型的变化。

在网站上实际显示时钟:

document.getElementById('clockbox').innerHTML= "something"; 

但对于这个代码需要有在HTML与id='clockbox'的元素,因此下面的HTML代码的地方放置在页面上:

<h5 id="clockbox">x</h5> 
0

你应该声明的所有变量,所以使用:

var d = new Date(); 
var nday = d.getDay(); 
var nmonth = d.getMonth(); 
... 

等。

我不明白的IF-句子

以下:

if (nhour == 0) { 
    ap = " AM"; 
    nhour = 12; 

} else if (nhour <= 11) { 
    ap = " AM"; 

} else if (nhour == 12) { 
    ap = " PM"; 

} else if (nhour >= 13) { 
    ap = " PM"; 
    nhour -= 12; 
} 

24小时时间转换为12个小时的时间与AM/PM。它可以替换为:

var ap = nhour < 12? ' AM' : ' PM'; 
nhour = nhour % 12 || 12; 

像什么1000和1900在这种情况下

得到年函数返回一个两位数年份的平均年在20世纪(1900至99年)。你能避免通过使用和getFullYear,它返回所有的数字表示年份:

var nyear = d.getFullYear(); 

并删除if(nyear<1000) nyear=nyear+1900;声明。

AP从哪里来?

我想你的意思是ap。它是一个未声明的变量,应该用var声明(应该是函数中的所有变量)。