3

我结合了getElementsByTagNamegetAttribute方法来获取文档中每个段落元素的标题属性。这是代码:

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在每次迭代时递增的循环中声明的“计数器”变量吗?是否[i]也代表getElementsByTagName函数返回的数组的索引?

4

4 回答 4

5

这里的关键是getElementsByTagName返回一个NodeList.

然后,您将使用 for 循环遍历 NodeList(可以被认为是一个数组)。的值i0数组的长度变为 -1。

所以回答你的问题。是的,i是索引,当你说paras[i]你在 index 处请求元素时i

例如,给定以下 html:

<body>
  <p id="a"></p>
  <p id="b"></p>
  <p id="c"></p>
</body>

如果您调用paras = document.getElementsByTagName("p")它将返回一个包含 3 个元素的数组。

  • Atparas[0]将是 id 为 a 的 p。

  • Atparas[1]将是 id 为 b 的 p。

  • Atparas[2]将是 id 为 c 的 p。

于 2013-01-24T14:22:01.413 回答
2

是的你是对的。paras 实际上是 DOM 中所有 p 标签的数组对象,包含所有特定属性

您可以在 chrome 开发人员工具中运行并亲自查看

于 2013-01-24T14:22:03.860 回答
2

正如詹姆斯已经说过的那样,是的,是的。

.getElementsByTagName返回一个数组。您可以使用索引访问该数组中的每个项目,例如:

paras[0]

访问第一个元素(在 JavaScript 中索引从 0 开始 - 但要小心,有些语言从 1 开始)。

paras[1]

访问第二个项目,依此类推...

使用 for 循环遍历数组中的所有元素是一种常见的模式,因此您可以对每个项目执行某些操作。所以:

paras[i]

访问数组中的第i个元素。

于 2013-01-24T14:23:41.360 回答
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
于 2013-01-24T16:25:55.297 回答