I already said Do not use the style property on HTML objects and as I was thinking how bad the innerHTML property can be, I considered doing an article on that subject. The problem was that stones were thrown at me after the first “Do not” article. Now I fear that this one may be worst… but I'll stand proud…

innerHTML seems easy

I like easy things : Diner Kraft and automatic cars. It's so easy to write HTML, why should I spend time with the DOM when I can easily do it with innerHTML?

With the Dom [source:javascript] var aLink = document.createElement(“a”); aLink.href=“http://www.javascriptkata.com”; aLink.appendChild(document.createTextNode(“Javascript Kata”); document.body.appendChild(aLink); [/source]

VS with innerHTML document.body.innerHTML += "<a href=\"http://www.javascriptkata.com\"&gt;Javascript Kata</a>"; Why???

innerHTML is dirty

It may look good at first sight but it'll look real bad the next morning without make-up. Did you noticed the \“? Prepare yourself because with innerHTML you will have a truck load of these. Take a look at this. document.body.innerHTML += "<a href=\"http://www.javascriptkata.com\" id=\"theLink\" class=\"aLink\" title=\"Javascript\">Javascript Kata</a>"; Ouch! My eyes burn.

A lot of HTML

iInnerHTML looks worst if you have a lot of And now, what if you have a lot of HTML code embedded in your javascript, it will win the war over you. I tell you.

innerHTML and ajax

I have an idea, if my ajax request returns some HTML, I could use the innerHTML property on an HTML object and assign the ajax response to it and it would be magic!

NO! In fact, you can do it but for every reasons in the world, don't ever do that. Yeah, I know, Yahoo!TV is doing it but don't fall in that trap.

Ajax should return data to your application. Why? Because you'll never know what you'll have to do with that information. For the moment, maybe you just do a simple display of the data but sooner or later, you'll have to re-use for another section of the page. If you return HTML, you will end up parsing it to extract the data contained in it. I tell you.

By the way, forget about that old XML thingy, try JSON

It is not standard

It doesn't really matter to me but if you're a W3C-compliant kind of guy, that may be a good point.

Your friend is a library

You have a lot a HTML code to produce through you javascript, go and get a good library. I can't tell you which one to use because they all have the ups and downs. Choose one and stick to it.