2012-08-14 65 views
0

我正在为网站设计仪表板,我添加的最后一个功能之一就是时钟。我有一个获取日期/时间,格式化并输出到时钟的基本功能,但是我的setInterval函数在Webkit浏览器中不起作用。我试着用几种不同的方式重新安排它,但没有成功。setInterval在webkit浏览器中扮演奇怪的角色

在Webkit中,时钟将重新加载,如果我把它强制通过突出显示文本时钟,或滚动重新渲染等

我的代码如下所示:

$(document).ready(function() { 

    setInterval(function() { 

     var time = new Date(); 

     var hour = time.getHours(); 
     var min = time.getMinutes(); 
     var sec = time.getSeconds(); 
     var amPm = (hour < 12 ? "AM" : "PM"); 

     hour = (hour <= 12 ? hour : hour - 12); 
     min = (min < 10 ? "0" + min : min); 
     sec = (sec < 10 ? "0" + sec : sec); 

     var currentTime = (hour + " : " + min + " : " + sec + " " + amPm); 

     $('#time').html(currentTime); 


     var date = time.getDate(); 

     var month = time.getMonth(); 

     var year = time.getYear(); 

     year = year - 100; 

     var todaysDate = (month + "/" + date + "/" + year); 

     $('#date').html(todaysDate); 


     var dayNum = time.getDay(); 

     var day = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"); 

     $('#day').html(day[dayNum]); 


    }, 1000); 

});​ 

它工作在Firefox,但不适用于Chrome或Safari。有谁知道为什么setInterval在Webkit中表现奇怪,并且该修补程序是什么?

+1

什么了//发条代码后? – 2012-08-14 19:46:58

+0

对不起,我没有意识到时钟代码是相关的,因为它在Firefox中的全部功能,但无论如何它在这里。 – OneChillDude 2012-08-14 19:49:59

+1

从它的声音来看,错误与Chrome没有重新绘制已更新的部分屏幕有关。您可以通过在函数内放置一个'console.log('tick')'来检查'setInterval'是否正在完成它的工作,然后观察您的控制台。 – meagar 2012-08-14 19:52:24

回答

0

所以,事实证明,我的代码中有一些错误。一个是时间对象需要全局声明。此外,最好的语法来包装整个事情到名为updateClock()一个函数,然后使用上的setInterval,没有()功能

setInterval(updateClock, 1000); 

好运