<script type="text/javascript">
function replaceMessage() {
var newnode=document.createElement("p");
var newnodeText=document.createElement("JS");
// newnode.innerHTML="JS"; 这样不是更简单吗
var oldNode = document.getElementById('oldnode');
oldNode.parentNode.replaceChild(newnode,oldnode);
}
</script>
直接用innerHTML不是更简单吗?还有 按照之前的课程讲的 (就是讲子节点childNodes那节),计算总元素节点是7个的那个例子。这边如果把文本节点追加到元素节点中,那么在计算子节点的时候,是不是在元素节点里面还要算上文本节点? 那7个子节点就不对了
一开始我也很疑惑,看了一下这篇博客就明白了:http://www.cnblogs.com/swii/p/5694818.html
两者的区别在于,innerHTML会将文本中包含的HTML代码实现效果,而createTextNode只是纯粹创造了文本节点,所以返回的效果也就是纯文本内容。
希望能帮助到你
nnerHTML的用法
tablerowObject.innerHTML
createTextNode的用法
createTextNode(data)
返回新创建的 Text 节点,表示指定的 data 字符串。
区别:1) innerHTML属于HTML Dom
createTextNode属于XML Dom
2) 虽然效果类似但是在某种情况下是有区别的
1 var p=document.createElement("p");2 p.className="message";3 p.innerHTML="<b>I love js</b>";4 document.body.appendChild(p);
1 var p=document.createElement("p");2 p.className="message";
3 var textnode=document.createTextNode("<b>I love js</b>");4 p.appendChild(textnode);5 document.body.appendChild(p);
在第一种情况下呈现出的效果是加粗的文本内容
而在第二种情况下呈现出的效果是<b>I love js</b>原文本。
所以两者的区别在于,innerHTML会将文本中包含的HTML代码实现效果,而createTextNode只是纯粹创造了文本节点,所以返回的效果也就是纯文本内容。
-----转
追加文本节点和innerHTML都可以;
若原先元素没有文本节点,添加文本节点,childNodes会影响元素子节点数目
好问题同求