2013-06-03 72 views
0

TypeError:document.getElementById(...)爲null。 不知道爲什麼我得到這個錯誤。在Firebug中正常工作。getElementById(...)爲空。在Firebug中工作正常

function init() { 
updateClock(); 
}; 


function updateClock () 
{ 
    var currentTime = new Date (); 
    var currentHours = currentTime.getHours (); 
    var currentMinutes = currentTime.getMinutes (); 
    var currentSeconds = currentTime.getSeconds (); 
    // Pad the minutes and seconds with leading zeros, if required 
    currentMinutes = (currentMinutes < 10 ? "0" : "") + currentMinutes; 
    currentSeconds = (currentSeconds < 10 ? "0" : "") + currentSeconds; 
    // Choose either "AM" or "PM" as appropriate 
    var timeOfDay = (currentHours < 12) ? "AM" : "PM"; 
    // Convert the hours component to 12-hour format if needed 
    currentHours = (currentHours > 12) ? currentHours - 12 : currentHours; 
    // Convert an hours component of "0" to "12" 
    currentHours = (currentHours == 0) ? 12 : currentHours; 
    // Compose the string for display 
    currentTimeString = currentHours + ":" + currentMinutes + " " + timeOfDay; 
    // Update the time display 
    document.getElementById("time").innerHTML = currentTimeString; 
} 

currentTimeString = ""; 
window.addEventListener("load", init(), false); 

這裏是它是如何在HTML imlemented:

<body> 
<p id="time">&nbsp;</p> 
</body> 
+0

你能提供一個http://jsfiddle.net我們可以重現錯誤嗎? –

回答

10
window.addEventListener("load", init(), false); 

此行調用init立即並將結果傳遞到addEventListener(就像任何其他函數調用)。

您想要傳遞函數本身,而不用調用它。

+0

非常感謝。 –

4

更改的行

window.addEventListener("load", init(), false); 

window.addEventListener("load", init, false); 

的原因是你在叫你的原代碼init()功能(和返回值傳遞給的addEventListener)。您需要改爲傳遞函數init(變量)。

+0

你應該解釋_why_。 – SLaks