在您的代碼:
> function DisplayTime(){
按照慣例,標識符開始以一個大寫字母被保留用於構造函數。簡單函數名稱應以小寫字母開頭。
> if (!document.all && !document.getElementById)
> return
> timeElement=document.getElementById? document.getElementById("mytime"): document.all.tick2
我懷疑有使用需要的document.all任何瀏覽器,就可以一舉兩得做:
var timeElement = document.getElementById && document.getElementById("mytime");
if (!timeElement) return;
。
> var CurrentDate=new Date()
請注意,按照慣例,以大寫字母開頭的變量名是爲構造函數保留的。而且,由於這個變量是內部的,這是很清楚,這是一個約會對象,並在此功能的唯一日期對象,考慮讓爲方便起見,名稱更短:
var d = new Date();
。
> var hours=CurrentDate.getHours()
> var minutes=CurrentDate.getMinutes()
> var seconds=CurrentDate.getSeconds()
> var DayNight="PM"
> if (hours<12) DayNight="AM";
> if (hours>12) hours=hours-12;
> if (hours==0) hours=12;
> if (minutes<=9) minutes="0"+minutes;
> if (seconds<=9) seconds="0"+seconds;
> var currentTime=hours+":"+minutes+":"+seconds+" "+DayNight;
可以使所有的小助手功能,以填充值和一些方便的運算符和方法縮短了很多:
function addZ(n){return (n<10? '0' : '') + n;}
var h = d.getHours();
var ampm = h < 12? 'AM' : 'PM';
h = h % 12 || 12;
var timeString = [addZ(h), addZ(d.getMinutes()), addZ(d.getSeconds())].join(':');
。
> timeElement.innerHTML="<font style='font-family:verdana, arial,tahoma;font- size:12px;color:#E25984; font-weight:bold;'>"+currentTime+"</b>"
所有這些造型應直接施加到包含元素,並且HTML是無效的反正(font標籤在HTML 4棄用,在HTML 5被移除時,標籤不均衡)。您可以提供一個強大的setText函數來設置元素的文本內容(請參見下文),而不是替換innerHTML。
> setTimeout("DisplayTime()",1000)
> }
字符串不要傳遞給的setTimeout,它傳遞函數的構造,並通過該功能,只需通過參照一個緩慢而低效的方式。另外,將函數設置爲在下一個整秒之後運行。所以,全功能變爲:
// This looks long winded, but it provides a robust way to set
// the text content for any browser in use. Since this uses a
// function expression, it must be before any code that calls setText
var setText = (function() {
var div = document.createElement('div');
if (typeof div.textContent == 'string') {
div = null;
return function (el, s) {
el.textContent = s;
}
} else if (typeof div.innerText == 'string') {
div = null;
return function (el, s) {
el.innerText = s;
}
} else {
div = null;
return function (el, s) {
while (el.firstChild) {
el.removeChild(el.firstChild);
}
el.appendChild(document.createTextNode(s));
}
}
}());
function displayTime(){
var timeElement = document.getElementById && document.getElementById("mytime");
if (!timeElement) return;
var d = new Date();
function addZ(n){return (n<10? '0' : '') + n;}
var h = d.getHours();
var ampm = h < 12? 'AM' : 'PM';
h = h % 12 || 12;
var timeString = [addZ(h), addZ(d.getMinutes()), addZ(d.getSeconds())].join(':') + ' ' + ampm;
if (typeof timeElement.textContent == 'string') {
timeElement.textContent = timeString;
} else if (typeof timeElement.innerText == 'string') {
setText(timeElement, timeString);
}
// Schedule to run just after next full second
setTimeout(displayTime, 1020 - d.getMilliseconds());
}
// Start when page loads
window.onload = displayTime;
和HTML:<?PHP的echo $指明MyTime對應>
<div id="mytime"></div>
你在做''期待?你的腳本是JavaScript,而不是PHP。 – Sebas
這只是一個測試。我可以在INPUT TAG中使用php顯示時間。無法通過Javascipt。 javasript INPUT標記。這是可能的嗎? – user2455832
document.all?這不是1990年和更多。字體?一樣。這是你找到的一些不好的代碼。 – epascarello