0

TypeError: document.getElementById(...) is null. No idea why I am getting this error. Works fine in 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);

Here is how it is imlemented in the html:

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

2 回答 2

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

该行init 立即调用并将结果传递给addEventListener(就像任何其他函数调用一样)。

您想传递函数本身,而不调用它。

于 2013-06-03T17:26:17.487 回答
4

换行

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

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

原因是您init()在原始代码中调用了该函数(并将返回值传递给 addEventListener)。您需要改为传递函数 init (变量)。

于 2013-06-03T17:26:40.897 回答