12

Why I getting error in browser?

TypeError: document.body is null

Code is working well in JSfiddle.

HTML

<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="jsscript.js"></script>
</head>
<body>
</body>

JS

var creElem = document.createElement("p");
creElem.innerHTML = "Hellow World";
creElem.setAttribute("id", "id_name");
document.body.appendChild(creElem);
Michał Perłakowski
  • 88,409
  • 26
  • 156
  • 177
Getup4
  • 121
  • 1
  • 2
  • 4

2 Answers2

18

Execute the code when the DOM loads. Wrap your logic in an event listener for DOMContentLoaded.

document.addEventListener('DOMContentLoaded', function () {
    // ...
});

The reason it worked in JSFiddle is because the JS is executed on load (that's the default option in JSFiddle).


Alternatively, depending on when you need the logic to be executed, you could also use:

window.addEventListener('load', function () {
    // ...
});

See: Difference between DOMContentLoaded and Load events

Community
  • 1
  • 1
Josh Crozier
  • 233,099
  • 56
  • 391
  • 304
3

Your document.body is not created or not existing yet. If you want to append child to document.body or do anything with document.body in your javascript then put your javascript code or link of js file in the end of body tag.

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script src="jsscript.js"></script>
    </body>
</html>
Amaimersion
  • 787
  • 15
  • 28