老师 为什么不加外面那层函数就一直弹出4呢 闭包到底是怎样的一个原理呢
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>方法的调用</title>
<style type="text/css">
li{
cursor: pointer;
border: 1px solid red;
width: 20px;
}
</style>
</head>
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<script type="text/javascript">
// 在此处完成任务
// var li=document.getElementsByTagName('li');
// for (var i = 0; i < li.length; i++) {
// function add(i){
// li[i].onclick=function(){
// alert(i);
// }}
// add(i);
// }
var li=document.getElementsByTagName('li');
for (var i = 0; i < li.length; i++) {
li[i].onclick=function(){
alert(i);
}
}
</script>
</body>
</html>
正在回答 回答被采纳积分+1
同学你好,由于for循环在页面加载时会立即执行,而点击事件是在点击时触发的,因此在点击事件里面使用i值,是循环之后的值,在同学提供的代码中i是4。
关于闭包,老师在视频中有讲解,同学可以去回顾下,链接:https://class.imooc.com/lesson/791#mid=19881
如果我的回答帮到了你,欢迎采纳,祝学习愉快~
- 参与学习 人
- 提交作业 622 份
- 解答问题 6815 个
微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。
了解课程


恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星