@ Матиас привел пример, который, скорее всего, исправит вашу проблему. Это означает, что элемент, к которому вы пытаетесь получить доступ с помощью document.getElementById, еще не был загружен в DOM во время его попытки.
Однако, если вы заинтересованы в возможности запустить ваш код как можно раньше, лучшим решением будет наблюдение за событием "dom :loaded" или событием готовности DOM. Это немного сложнее, чем вызов window.onload , но может помочь такая структура, как Prototype.js или jQuery .
См. на этой странице , на которой Майкл Шарман говорит именно об этой функции.
Затем вы можете написать код, такой как:
document.observe(document, 'dom:loaded', initFunction);
function initFunction()
{
// this code will run as soon as DOM is loaded,
// but before any images are loaded
}
Очевидно, что если вы не хотите использовать фреймворк, вы можете повторить поведение, используя только стандартные вызовы javascript, но вы должны быть готовы к тому, чтобы справиться с различиями между браузерами. Вы можете начать с просмотра события onreadystatechanged и аналогичных событий для других браузеров (например, DOMContentLoaded )