DOMはHTMLとまったく同じように機能します。DOMはHTMLをオブジェクトとしてモデル化するように設計されているため、これは理にかなっています。それで、あなたが以下を太字にしたいなら、あなたは何をしますか:
Hello World
あなたのコードから、あなたがやろうとしていることは次のようなものです:
style=font-weight:bold Hello World
明らかに、それは有効なHTMLではないため、機能しません。あなたが通常することはこれです:
<span style='font-weight:bold;'>Hello World</span>
したがって、DOMでも同じことを行う必要があります。
// Assume you have a div "div" and the first child
// is the text node "Hello World"
var hello_world = div.firstChild;
// Now, you want to make Hello World bold.
// So you need to create a span:
var span = document.createElement('span');
span.style['font-weight'] = 'bold';
// Now wrap hello_world in the span:
span.appendChild(div.removeChild(hello_world));
上記は、実際に機能するDOMコードであり、必要な処理を実行します。ただし、注意してください。
- 標準に準拠したブラウザも、空白をノードとしてカウントします。
- IEは空白をノードとしてカウントしません。
たとえば、HTMLが次のようになっている場合:
<div>
<span>Hi</span>
</div>
標準では、DOMは次のようになっている必要があります。
div +
|---- text node (whitespace)
'---- span +
'---- text node (Hi)
しかし、IEはほとんどの人がおそらく期待することを行います。
div +
'---- span +
'---- text node (Hi)
これは、それがnode.firstChild
あなたが期待しているものであるかどうかを確認せずに盲目的に信頼することはできないことを意味します。