慕粉1461748147
2016-08-05 09:51
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
</head>
<body>
<div>
javascript
<p>javascript</p>
<div>jQuery</div>
<h5>PHP</h5>
</div>
<script type="text/javascript">
var x=document.getElementsByTagName("div")[0].childNodes;
for(var i=0;i<x.length;i++)
{
document.write("第"+(i+1)+"个节点的值是:"+x[i].nodeValue+"<br />");
document.write("第"+(i+1)+"个节点的名称是:"+x[i].nodeName+"<br />");
document.write("第"+(i+1)+"个节点的属性是:"+x[i].nodeType+"<br />");
document.write("<br />");
}
</script>
</body>
</html>
楼主:
属性childNodes存在兼容性问题,在不同的浏览器中结果不同。
firefox、chrome、opera、safari浏览器中节点之间的空白符默认为一个节点,而IE不会由此默认。
所以,你在不同的浏览器中可以看下结果。
这个程序是要看在整个html文档流中,第一个div块((“div”)[0])里面的所有节点的值、名称、属性。
节点类型的值:是规定好的:元素 1; 属性 2; 文本 3; 注释 8; 文档 9。
名称:1. 元素节点的 nodeName 与标签名相同2. 属性节点的 nodeName 是属性的名称3. 文本节点的 nodeName 永远是 #text4. 文档节点的 nodeName 永远是 #document
属性:1. 元素节点的 nodeValue 是 undefined 或 null2. 文本节点的 nodeValue 是文本自身3. 属性节点的 nodeValue 是属性的值
其中:javascript是文本,<p>、<div>、<h5>都是元素,所以结果都是null。如果你在非IE浏览器中运行,空白也是文本,文本内容为空,所以结果是空
在语言表示中第几个是从1开始,而在代码数组中是从0开始,i+1是为了在显示时方便阅读
为何要i+1
JavaScript进阶篇
468785 学习 · 22562 问题
相似问题