john
john

Reputation: 315

Add an element to the DOM with JavaScript

I want add an element with JavaScript.

I have the following code:

var collection = document.getElementsByTagName('body');
var a = document.createElement('div');
a.innerHTML = 'some text';
collection.item(0).firstChild.appendChild(a);

and simple HTML:

<html>
    <head></head>
<body>

</body>
</html>

Where is mistake?

Upvotes: 22

Views: 48360

Answers (2)

naivists
naivists

Reputation: 33501

This should do what you are looking for:

    var newdiv = document.createElement("div");
    newdiv.appendChild(document.createTextNode("some text"));
    document.body.appendChild(newdiv);
<html>
    <head></head>
<body>

</body>
</html>

First, you create the element by document.createElement. To set its text contents, you have to have a "text node" wrapping your text. So, you first create such text node and then add it as (the only) child to your new object.

Then, add your newly created DIV element to the DOM structure. You don't have to look for the BODY element with getElementsByTagName(), since it exists as a property of document object.

Upvotes: 36

Marc B
Marc B

Reputation: 360562

Your code is failing because at the time you try to insert that brand new div, the body tag is empty, and therefore there's no firstChild to append anything to. Change your last line to:

collection.item(0).appendChild(a);

Upvotes: 6

Related Questions