我正在尝试使用以下JavaScript代码创建世界时钟。 时钟显示在屏幕上,但它没有滴答作响。我的目标是在同一屏幕中为不同时区添加时钟。我可以添加几个时钟,但它们没有滴答作响。
<script language="javascript">
var timerRunning = false;
var timezone = "Greenwich Mean Time"; // what time zone are you in ?
var adjust = 0;
function timeCheck(diff) {
if (timerRunning) {
clearTimeout(updatetime);
timerRunning = false;
}
gmtOffset = eval(diff);
var tdate_01 = new checkDateTime("zonetime");
var tdate_02 = new checkDateTime("testt");
}
function checkDateTime(clckID) {
var today = new Date();
var year = today.getYear() + 1900;
var month = today.getMonth()+1;
var date = today.getDate();
var day = today.getDay();
var hour = today.getHours();
var minute = today.getMinutes();
var second = today.getSeconds();
var lastSat = date - (day+1);
while (lastSat < 32) lastSat+=7;
if (lastSat > 31) lastSat+=-7;
var firstSat = date - (day+1);
while (firstSat > 0) firstSat+=-7;
if (firstSat < 1) firstSat+=7;
if ((((month == 4) && (date >= firstSat)) || month > 4) &&
(month < 11 || ((month == 10) && day <= lastSat))) adjust += 60;
yourOffset = (new Date()).getTimezoneOffset();
yourOffset = yourOffset + adjust;
var xx = navigator.appName
var xy = navigator.appVersion;
xy = xy.substring(0,1);
if ((xy == 4) && (xx == "Netscape")) yourOffset = yourOffset+adjust;
if ((((month == 4) && (date > 20)) || month > 4) && (month < 11 || ((month == 10) &&
day < 30))) adjust -= 60;
ourDifference = eval(gmtOffset - yourOffset);
var half = eval(ourDifference % 60);
ourDifference = Math.round(ourDifference / 60);
hour = eval(hour - ourDifference);
var m = new Array("",
"Jan","Feb","Mar",
"Apr","May","Jun",
"Jul","Aug","Sept",
"Oct","Nov","Dec");
var leap = eval(year % 4);
if ((half == -30) || (half == 30)) minute += 30;
if (minute > 59) minute -= 60, hour++;
if (minute < 0) minute += 60, hour--;
if (hour > 23) hour -= 24, date += 1;
if (((month == 4) || (month == 6) ||
(month == 9) || (month == 11)) && (date==31)) date = 1, month ++;
if (((month == 2) && (date > 28)) && (leap != 0)) date = 1, month ++;
if ((month == 2) && (date > 29)) date = 1, month++;
if (hour < 0) hour += 24, date --;
if ((date == 32) && (month == 12)) month = m[1], date = 1, year++;
if (date == 32) date = 1, month++;
if ((date < 1) && (month == 1)) month= m[12], date = 31, year--;
if (date < 1) date = 31, month --;
if (((month == 4) || (month == 6) ||
(month== 9) || (month == 11)) && (date == 31)) date = 30;
if ((month == 2) && (date > 28)) date = 29;
if (((month == 2) && (date > 28)) && (leap != 0)) date=28;
for (i=1; i<13; i++) {
if (month == i) {
month = m[i]; break;
}
}
var dateTime = hour;
dateTime = ((dateTime < 10) ? "0":"") + dateTime;
dateTime = " " + dateTime;
dateTime += ((minute < 10) ? ":0" : ":") + minute;
dateTime += ((second < 10) ? ":0" : ":") + second;
dateTime += (hour >= 12) ? " PM, " : " AM, ";
dateTime += month + " " + date + ", " + year;
var mainDiv = document.getElementById(clckID).innerHTML = dateTime;
updatetime=setTimeout("checkDateTime()", 900);
timerRunning = true;
}
</script>
<select onchange="timeCheck(this.value)" size="0" align="center">
<option value="">SELECT --> COUNTRY</option>
<option value="+480">Pacific</option> // Australia UTC offset value is 10
<option value="+420">Central</option>
<option value="+300">Estern</option>
<option value="+600">Hawaii</option>
<option value="+360">Mexico</option>
<option value="-330">New Delhi</option>
<option value="-480">HONG KONG</option>
<option value="-540">TOKYO</option>
<option value="+0">London</option>
</select>
<div id="zonetime"></div>
<div id="testt"></div>
答案 0 :(得分:1)
在setTimeout
您忘记了ID
updatetime=setTimeout(function(){checkDateTime(clckID);}, 900);
答案 1 :(得分:0)
设置超时时必须传递参数:
updatetime=setTimeout("checkDateTime(" + clckID + ")", 900);