Uncaught TypeError: Не може да се прочете свойството „getElementsByTagName“ на null

Опитвам се да избирам елементи с .getElementsByTagName().

var tags = document.body.getElementsByTagName("*");

Текущ опит с използване на уроци, извлечени от съществуващ отговор https://stackoverflow.com/a/7410966/2007055

Но опитът ми се провали и имам тази грешка:

Uncaught TypeError: Cannot read property 'getElementsByTagName' of null

Защо създава тази грешка и как мога да я поправя?


person 5ervant - techintel.github.io    schedule 24.04.2014    source източник
comment
Какво ви дава console.log(document.body)?   -  person Salman A    schedule 24.04.2014


Отговори (2)


Преместете <script> от елемента <head> към елемента <body>.



document.body няма да получи присвоена стойност, докато не бъде създаден елементът body.

Тъй като се опитвате да получите всички елементи в <body>, бихте искали да сте в края на елемента body. Или го поставете във функция и го извикайте от събитие, което се задейства след създаването на тялото (като събитието window load). За да прочетете повече за този опит, https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event.

person Quentin    schedule 24.04.2014

Примери за функции:

Пример с двата метода:

function init() {
  alert("hello javascript");
};

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

$(document).ready(function () {
  alert("hello jQuery");
});

http://jsfiddle.net/Ln5zu4Lt/

Внимавайте, примерът за JavaScript по-горе изчаква зареждане на страницата (изображения, вградени рамки и т.н.). Това отнема повече време, отколкото готовият jQuery.

person mrroot5    schedule 24.11.2014