I'm with @stenington on this one. The HTML document should contain all of the stuff that will be presented. It makes it easier to find things when HTML structures and styles need to change. In an ideal world, the only thing that JavaScript should have to do is flip on and off styles.

It's been my experience in the past that dealing with pages that do a lot of DOM injection is fine to start but becomes harder and harder to maintain as the site design gets tweaked (especially if you are not the original author). Client side templating tends to be a much more sustainable solution.

(Note: I say nothing about performance here because I would rather write code for humans first, benchmark and fix performance issues when they prove to be a problem)