jimeast
jimeast

Reputation: 277

Javascript, trying to add linebreak inside create text node method

This is my script:

<script>
/*jslint browser:true */
var i;
var out = document.getElementById("output");
var args = ["aaa", "bbb", "ccc", "ddd", 1, 2, 4 + 4];
function displayArgs() {
    "use strict";
    for (i = 0; i < args.length; i++) {
        out.appendChild(document.createTextNode(args[i] + "<br>"));
    }
}

displayArgs(args);
</script>

my output so far all appears on a single line with the break tags showing rather than b

Upvotes: 14

Views: 35184

Answers (3)

Larry Battle
Larry Battle

Reputation: 9178

document.createTextNode prevents text from being rendered as html. Try this instead.

/*jslint browser:true */
var i;
var out = document.getElementById("output");
var args = ["aaa", "bbb", "ccc", "ddd", 1, 2, 4 + 4];
function displayArgs() {
    "use strict";
    for (i = 0; i < args.length; i++) {
        out.appendChild(document.createTextNode(args[i]));
        out.appendChild(document.createElement("br"));
    }
}
displayArgs(args);

Demo: http://jsfiddle.net/LVm9z/

Upvotes: 20

Heather
Heather

Reputation: 2652

You are creating a text node, so html tags are ignored. Use document.createElement instead:

var myDiv = document.createElement("div");
myDiv.id = 'myDiv';
myDiv.innerHTML = 'blah!<br/>';
document.body.appendChild(myDiv);

Upvotes: 5

alex
alex

Reputation: 490263

A text node is a text node, if it contains a <br> (or any HTML), it won't be parsed as HTML, as a text node's data is only treated as text.

You could add...

out.appendChild(document.createElement("br"));

Upvotes: 3

Related Questions