getElementsByTagName 真的是返回一个数组吗?

来源:3-1 DOM简介

Herron___

2019-01-22 04:07:09

用chrome遍历结果出现了length,item和nameditem。返回值应该是一个dom?

写回答

3回答

好帮手慕阿莹

2019-01-22

1、经过确认,确实返回的是Nodlist,非常感谢同学的反馈,我们已经反馈给相关工作人员去做修改。再次感谢同学的反馈,给您带来的不便我们深表歉意。

2、同学遍历的时候建议不要用 for in这种形式。可以用原来普通的for循环:

var h = main[i] 是获取到了这个p对象,

如果想要内容,需要:main[i].innerHTML

如果想要索引,直接输入i 就可以了。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>position</title>
<style>
   *{
    margin: 0px;
    padding: 0px;
    }
#a{
float: left;
            width: 300px;
            height: 300px;
            background-color: red;
}
#b{
            width: 300px;
            height: 300px;
            margin-left: 100px;
            margin-top: 100px;
            background-color: green;
}
</style>
</head>
<body>
<div id = "1">
    <p>1</p>
    <p>2</p>
    <p>3</p>
</div>
<script>

    var main = document.getElementsByTagName('p');
   // for (i in main) {
      //  document.writeln(i);
    //}
	for (var i = 0; i < main.length; i++)  {
     var h = main[i].innerHTML;
	 alert(h);
     }
</script>
</script>
</body>
</html>

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

0
herron___
h 好的,谢谢!
h019-01-23
共1条回复

Herron___

提问者

2019-01-22

我查了w3c的文档。getElementsByTagName() 返回的是一个Nodelist对象而不是一个Array。而这个Nodlist 有length这个attribute以及item这个method。但我还是不太明白为什么遍历的时候会出现。 https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-A6C9094

http://img.mukewang.com/climg/5c46afce00013dfe10750372.jpg

<div id = "1">
    <p>1</p>
    <p>2</p>
    <p>3</p>
</div>
<script>
    var main = document.getElementsByTagName('p');
    for (i in main) {
        document.writeln(i);
    }
</script>


0

好帮手慕阿莹

2019-01-22

getElementsByTagName 真的是返回一个数组。

这个的意思是通过标签获取,但是一个页面中有可能会有很多个相同的标签。所以它要返回的是一个数组。“用chrome遍历结果出现了length,item和nameditem”是什么意思呢?

请同学截图并贴一下你的代码:

注意不要贴在回复里,会失去代码的格式。可以在回答里贴一下。祝学习愉快。

至于同学说的

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


0
herron___
h 麻烦助教看一下我的回复
h019-01-22
共1条回复

0 学习 · 10204 问题

查看课程