话不多说,请看栗子:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
</head>
<body>
<script type="text/javascript">
//使用createTextNode
var ele=document.createElement("p");
var text=document.createTextNode("<b>I love JavaScript<b>");
ele.appendChild(text);
document.body.appendChild(ele);
//使用innerHTML
var ele2=document.createElement("p");
document.body.appendChild(ele2);
ele2.innerHTML="<b>I love JavaScript<b>";
//使用innerText
var ele3=document.createElement("p");
ele3.innerText="<b>I love JavaScript<b>";
document.body.appendChild(ele3);
//使用outerHTML
var ele4=document.createElement("p");
ele4.setAttribute("id","oh"); //设置id属性
document.body.appendChild(ele4);//先将该节点添加至body元素中
oh.outerHTML="<b>I love JavaScript</b>";
</script>
</body>
</html>
最后实现的效果如下(用chrome浏览器/blink内核):
<b>I love JavaScript<b>
I love JavaScript
<b>I love JavaScript<b>
I love JavaScript
- innerHTML和outerHTML会把整段文本作为一行HTML代码处理,
- 而createTextNode和innerText只会把内容作为一段纯文本处理。
- 此外outerHTML要对被id调用,所以应该设置好id属性并且要先将元素添加到文档中,再追加outerHTML,如果按下面的代码执行则不会显示文字:
//使用outerHTML
var ele4=document.createElement("p");
ele4.outerHTML="<b>I love JavaScript</b>";//未被id调用
document.body.appendChild(ele4);
注意:innerHTML是符合W3C标准的属性,而innerText只适用于IE浏览器,因此,尽可能地去使用innerHTML,而少用innerText。
这里有一个很不错的图帮助理解: