为了账号安全,请及时绑定邮箱和手机立即绑定

js子节点的访问,var text=document.getElementsByTagName('div')[0].childNodes;为什么是【0】

js子节点的访问,var text=document.getElementsByTagName('div')[0].childNodes;为什么是【0】

慕粉3204329 2016-12-13 11:56:09
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>无标题文档</title></head><body><div>javascript<p>javascript</p><span>jQuery</span><h5>PHP</h5></div><script type="text/javascript">         var text=document.getElementsByTagName('div')[0].childNodes;         for (var i=0;i<text.length;i++)         {             document.write(text[i].nodeName+'<br>');            document.write(text[i].nodeValue+'<br>');                 document.write(text[i].nodeType+'<br>'+'<br>'+'<br>');            }</script></body></html>
查看完整描述

5 回答

已采纳
?
蜂之谷

TA贡献564条经验 获得超863个赞

0表示第一个div,索引从0开始

查看完整回答
1 反对 回复 2016-12-13
?
pomelo9240

TA贡献1条经验 获得超0个赞

因为通过getElementsByTagName取到的值是一个数组,在这种情况下数组是没有.childNodes方法的,html里标签元素元素才有.childNodes方法。

因为TagName(标签名称)为 'div' 的只有一个,所以取数组的第一个值,也就是[0]来拿到这个元素,然后再对取到的这个标签元素用.childNodes方法取到div标签内的子标签

js原生方法获取DOM节点,一般通过方法名称就可以判断返回值是一个标签元素还是一个数组。

有getElements的返回值都是一个数组,数组里包含着获取到的元素,需要通过[0]、[1]、[2]...来拿到指定位置上的元素标签。

有getElement的返回值都是一个标签元素,可以直接在其后面调用各种针对DOM节点的方法

查看完整回答
反对 回复 2016-12-13
?
甜菜1

TA贡献1条经验 获得超0个赞

在绝大部分编程语言中,都是以“0”开始计数的
查看完整回答
反对 回复 2016-12-13
?
纱隔万水芷兰间

TA贡献7条经验 获得超0个赞

因为getElementsByTagName()的返回值是一个NodeList 就是跟数组差不多的东西 所以就算它只有一个元素你也得写出来索引

查看完整回答
反对 回复 2016-12-13
?
慕粉3204329

TA贡献2条经验 获得超0个赞

这里也只有一个DIV呀  那我是不是可以把【0】去掉呢

查看完整回答
反对 回复 2016-12-13
  • 蜂之谷
    蜂之谷
    不能去掉
  • 慕粉3204329
    慕粉3204329
    恩恩,我已经试验过了。在里面加多几个DIV试了下,知道【0】是第一个div了。谢谢
  • 5 回答
  • 0 关注
  • 2405 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信