(function() { document.getElementById() == null; })();

Почему самозапускающаяся анонимная функция не может получить доступ к элементам DOM. Почему такой пример не работает.

(function() {
    alert(document.getElementById('someElement'));
)();

Почему оповещение будет показывать "ноль"?

2 ответа

Решение

Просто выполните его при загрузке DOM. Вы также можете использовать атрибут defer.

(function() {
    window.addEventListener("load", function() {
        alert(document.getElementById('someElement'));
    }, false);
})();

Ты скучаешь по закрывающей фигурной скобке },

Так должно быть

(function() {
    alert(document.getElementById('someElement'));
})();

Это будет выполнено немедленно, поэтому его нужно поместить в соответствующее место, чтобы убедиться, что DOM загружен. Убедитесь, что этот скрипт загружается в конце вашего HTML-файла, или включите проверку, как предложил Георги Наумов, добавление слушателя в событие window.load сделает то же самое.

Другие вопросы по тегам