[英]Why isn't a variable defined in for loop not visible in setTimeout function?
[英]Why isn't this variable defined through closure?
我有一个简单的 JS 代码,如下所示。 当我单击h2
元素时,我收到一个参考错误, h2Elements is not defined
当console.log('h2Elements', h2Elements)
console.log('faqs', faqs)
工作正常时, console.log('faqs', faqs)
console.log('h2Elements', h2Elements)
。
不宜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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.