使用getElementsByTagName和getAttribute方法

use*_*264 3 javascript

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

var paras = document.getElementsByTagName('p');
for (i = 0; i < paras.length; i++) {
    console.log(paras[i].getAttribute('title'));
}
Run Code Online (Sandbox Code Playgroud)

我特别需要帮助的代码行是以下代码:

console.log(paras[i].getAttribute('title'));
Run Code Online (Sandbox Code Playgroud)

[i]这行代码在做什么?这是我在for循环中声明的“计数器”变量,它在每次迭代中都在递增吗?并且[i]还代表该getElementsByTagName函数返回的数组索引吗?

Joh*_*ner 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>
Run Code Online (Sandbox Code Playgroud)

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

  • paras[0]ID为a的p处。

  • at paras[1]是ID为b的p。

  • paras[2]ID为c的p处。

  • 请注意,`getElementsByTagName`实际上会返回`NodeList`,而不是实际数组。但是它具有一个“长度”属性,因此其行为基本上像一个真实的数组(例如,您不能执行“ paras.forEach”)。 (2认同)