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
而不检查它是否是你所期望的。