best practice, from what I understand, is to have the js do as little as possible and the html and css do as much as possible.
you set up the structure with a skeleton html, do all of your styling in css and let the js "fill in" the bits that you have no control over - basically the text, links and image paths from your JSON.
note that document.write and innerHTML are two very different methods and the former is pretty much frowned on for all but very specialised circumstances.
it's also worth noting, maybe, that things don't have to exist yet for them to be styled by css once they do come into existence - in my code for example the css specifies image dimensions, but the images are "created" later.
if you have div id's with incrementing numbers, you might look at how you can populate them more dynamically, for example:
hopefully that answers your question, although I was a little unsure about what you were asking. If you'd like to post your code (or a portion of it) maybe it will become clearer.