为什么getElementsByTagName()返回html集合,而getElementsByTagName()[0]返回未定义?

时间:2019-07-16 14:52:17

标签: javascript google-chrome undefined getelementsbytagname

我正在研究使用内容脚本的chrome扩展程序。我正在尝试获取页面的元素,但正在获取从未遇到过的结果。页面加载后,这就是我正在运行的代码。

var iframe = document.getElementsByTagName("iframe");
console.log(iframe);
console.log(iframe[0]);

第一个日志返回一个长度为1的HTML集合,第一个元素被完全定义为iframe元素。

第二条日志返回未定义。

我肯定想念一些明显的东西,有人知道发生了什么事吗?

我也尝试了item(0),结果为否。

我尝试获取ID,类和其他引用DOM元素的方法,它们都可以工作。但是类在这里有同样的问题,它将返回一个元素数组,但是如果我尝试引用第一个元素,则始终是不确定的。

1 个答案:

答案 0 :(得分:0)

问题是它是Live HTMLCollection。如此更新!您是在元素存在之前对其进行引用。

<script>
  var iframe = document.getElementsByTagName("iframe");
  console.log("1", iframe);
  console.log("2", iframe[0]);
</script>
<iframe></iframe>
<script>
  console.log("3", iframe);
  console.log("4", iframe[0]);
  iframe[0].remove();
  console.log("5", iframe);
  console.log("6", iframe[0]);
</script>