Neither innerHTML nor innerText are standard methods. innerText is IE only. Don't use it. There are DOM methods for replacing the content of the textNodes, like nodeValue and data. XML DOM has also some methods like insertData() and replaceData()
I just came back from W3C - The innerHTML, outerHTML and insertAdjacentHTML are on W3C and will be available on HTML5, which makes them future proof.
3.5 Dynamic markup insertion
Meaning, it's a future compatible standard.
But they've dropped the ball with html:innerText, which is different from Text content:[INDENT]TEXT:[INDENT]"this___<b>is</b>___why!"[/INDENT]
innerText:[INDENT]"this <b>is</b> why!"[/INDENT]
innerHTML:[INDENT]"this is why!"[/INDENT][/INDENT]
Regarding the text, the general idea is that text nodes should be nested rather in <p>, <span> and <div> elements. <b> and <i> elements are deprecated in favor of <strong> and <em>. But even the latest (along with other font related tags) lose ground in favor of CSS styling. Instead of <b>test</b> now we use <span style="font-weight:bold">text</span> or even better a class instead of a style.
Speaking of the problem faced by psteinberg, - it is important to point out that:
Inline Elements can't have HTML and even if they would, it will result in a malformed HTML that will not validate and also cause lots of rendering, inconsistencies and other scripting problems.
One can however put a B string inside a SPAN content. But you can never put a block level element inside an inline element. Your page will never validate and your innerHTML function including other DOM methods might just not work.