javascript - 为什么不通过闭包定义这个变量?

标签 javascript html

我有一个简单的 JS 代码,如下所示。当我点击 h2元素,我收到一个引用错误,指出 h2Elements is not definedconsole.log('h2Elements', h2Elements) 上什么时候console.log('faqs', faqs)工作正常。

不应该h2Elements定义为 faqs是通过闭包吗?

<!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>

最佳答案

faqs 和 h2Elements 不在切换功能范围内。切换函数中的 faqs 变量正在提供输出,因为“faqs”是某个 DOM 元素的 ID。

关于javascript - 为什么不通过闭包定义这个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49002312/

相关文章:

javascript - 改变元刷新的内容不会改变刷新时间

javascript - 如何定制平滑滚动 JavaScript 以忽略 Bootstrap Carousel?

javascript - 如何链接两个文件都有 onload 事件的多个 javascript 文件?

javascript - 单击带有标签的单选按钮

javascript - JS 中的 parseFloat 用于德语表示法

javascript - Promise 控制流 (es2015),具有复杂的参数依赖性

jquery - 在不影响整个行高的情况下更改 <td> 的高度

javascript - 为什么 JavaScript 换行符在 HTML 中不起作用?

javascript - Web API 2 - 返回 Pdf,在客户端上显示/下载收到的 Pdf 文件 (AngularJs)

javascript - 带有链接到 ng-init 的对象数组的 ng-options