Javascript 为什么不是';这个变量不是通过闭包定义的吗?

Javascript 为什么不是';这个变量不是通过闭包定义的吗?,javascript,html,Javascript,Html,我有一个简单的JS代码,如下所示。当我点击h2元素时,我得到一个参考错误,表示console.log('h2Elements',h2Elements)上没有定义h2Elements当console.log('faqs',faqs)工作正常 h2元素不应该像faq是通过闭包定义的吗 <!DOCTYPE html> <html lang="en"> <body> <main id="faqs"> <h2><a

我有一个简单的JS代码,如下所示。当我点击
h2
元素时,我得到一个参考错误,表示
console.log('h2Elements',h2Elements)
上没有定义
h2Elements
console.log('faqs',faqs)
工作正常

h2元素
不应该像
faq
是通过闭包定义的吗

<!DOCTYPE html>
<html lang="en">
<body>
    <main id="faqs">
        <h2><a href="#" >What is JavaScript?</a></h2>
        <div>
            <p>JavaScript is a programming language that's built into the major web browsers.
            </p>
        </div>
    </main>
    <script>
      var toggle = function() {
        console.log('faqs', faqs)
        console.log('h2Elements', h2Elements)
      };

      window.onload = function() {
          var faqs = document.getElementById("faqs");
          var h2Elements = faqs.getElementsByTagName("h2");

          for (var i = 0; i < h2Elements.length; i++ ) {
            h2Elements[i].onclick = toggle;
          }
      };
    </script>
</body>
</html>

JavaScript是一种内置于主要web浏览器中的编程语言。

var toggle=函数(){ console.log('FAQ',FAQ) console.log('h2Elements',h2Elements) }; window.onload=函数(){ var faqs=document.getElementById(“faqs”); var h2Elements=faqs.getElementsByTagName(“h2”); 对于(变量i=0;i
常见问题解答和H2元素不在切换功能的范围内。toggle函数中的faqs变量正在提供输出,因为“faqs”是某个DOM元素的id。

toggle
方法对
h2Elements
不可见。您在哪里为html正文中的任何标记提供了id作为
h2Elements
,它的定义是因为。我相信getElementsByTagName返回的是一个集合,而不是元素引用