我有一个简单的 JS 代码,如下所示。当我点击 h2
元素,我收到一个引用错误,指出 h2Elements is not defined
在 console.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/