访问子结点没懂,大神帮看看,分析一下步骤。

来源:9-8 访问子节点childNodes

慕粉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>

写回答 关注

3回答

  • 慕设计7056223
    2016-08-05 15:58:21

    楼主:

    属性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浏览器中运行,空白也是文本,文本内容为空,所以结果是空

  • 凰羽汀
    2016-08-05 10:33:02

    在语言表示中第几个是从1开始,而在代码数组中是从0开始,i+1是为了在显示时方便阅读

  • 慕粉1461748147
    2016-08-05 10:07:29

    为何要i+1

    快乐购

    因为数组从0开始,加一就从一开始

    2016-08-25 16:17:35

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468785 学习 · 22562 问题

查看课程

相似问题