我结合了getElementsByTagName
和getAttribute
方法来获取文档中每个段落元素的title属性。这是代码:
var paras = document.getElementsByTagName('p');
for (i = 0; i < paras.length; i++) {
console.log(paras[i].getAttribute('title'));
}
我特别需要帮助的代码行是这一行:
console.log(paras[i].getAttribute('title'));
这段代码中[i]
做了什么?这是我在for
循环中声明的'counter'变量,它在每次迭代时递增吗? [i]
是否也代表getElementsByTagName
函数返回的数组的索引?
答案 0 :(得分:4)
此处的关键是getElementsByTagName返回NodeList
。
然后循环遍历NodeList(可以被认为是一个数组)。 i
的值从0
变为数组-1的长度。
所以回答你的问题。是的,i
是索引,当您说paras[i]
时,您要求索引为i
的元素。
例如,给出以下html:
<body>
<p id="a"></p>
<p id="b"></p>
<p id="c"></p>
</body>
如果你调用paras = document.getElementsByTagName("p")
,它将返回一个包含3个元素的数组。
paras[0]
将是带有id a的p。
paras[1]
将是带有id b的p。
paras[2]
将是带有id c的p。
答案 1 :(得分:2)
是的,你是对的。 paras实际上是DOM中包含所有特定属性的所有p标记的数组对象
您可以使用Chrome开发人员工具运行并亲眼看看
答案 2 :(得分:2)
詹姆斯已经说过,是的,是的。
.getElementsByTagName
返回一个数组。您可以使用索引访问该数组中的每个项目,例如:
paras[0]
访问第一个元素(索引从JavaScript开始为0 - 但要小心,某些语言从1开始)。
paras[1]
访问第二项,依此类推......
使用for循环迭代数组中的所有元素是一种常见的模式,因此您可以对每个项目执行某些操作。所以:
paras[i]
访问数组中的 i 元素。
答案 3 :(得分:1)
getElementsByTagName返回一个数组。所以,您可以通过索引访问每个元素。例如:
paras[0]; // first <p> in your document
paras[1]; // second <p> in your document
paras[2]; // third <p> in your document
paras[3]; // fourth <p> in your document