使用getElementsByTagName和getAttribute方法

时间:2013-01-24 14:19:22

标签: javascript

我结合了getElementsByTagNamegetAttribute方法来获取文档中每个段落元素的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函数返回的数组的索引?

4 个答案:

答案 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