博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
for循环中变量i值的理解
阅读量:7081 次
发布时间:2019-06-28

本文共 907 字,大约阅读时间需要 3 分钟。

<ul id="ul1">

<li class="li">1</li>
<li class="li">2</li>
<li class="li">3</li>
<li class="li">4</li>
</ul>

<script>

window.onload = function () {

  var app = document.getElementsByClassName('li');

  // for循环变量输出

  // for (var i = 0; i < app.length; i++) {
  // // 在for循环里绑定的事件要等循环结束后才会执行
  // app[i].onclick = function () {
  // console.log(i)
  // };
  // }
  // // 第一个循环这里点击输出的都是4

  // // 第一个for循环拆解后就是下面这个for循环
  // for (var i = 0; i < app.length; i++) {
  // var ss = function () {
  // console.log(i)
  // };
// }
  // // 在for循环运行结束后再执行点击事件,调用ss函数,此时变量i的值当然是4
  // app[0].onclick = ss
  // app[1].onclick = ss
  // app[2].onclick = ss
  // app[3].onclick = ss

 

  // 解决方法

for (var i = 0; i < app.length; i++) {
  // 使用自调用的匿名函数内嵌一个闭包,可以完美解决for循环变量传值的问题
  (function(n){
    app[i].οnclick=function(){
      console.log(n)
    }
  })(i)
  }
}

</script>

转载于:https://www.cnblogs.com/webwangjie/p/9370041.html

你可能感兴趣的文章
cisco *** 学习笔记--第四天
查看>>
2014第2周
查看>>
删除N天前日志
查看>>
my.cnf 详解与优化
查看>>
我的友情链接
查看>>
二维指针——改变动态申请的空间大小
查看>>
静态路由实验题
查看>>
NTP white paper
查看>>
Cisco 3750 802.1x认证失败跳转vlan的配置
查看>>
Binary indexed tree
查看>>
etcd的学习心得和使用
查看>>
企业邮箱发邮件出现系统退信(NDR)的大致原因?
查看>>
js封装对象——prototype的使用
查看>>
html5 web worker 011
查看>>
alternatives(update-alternatives) 的配置目录位置
查看>>
SSO:JWT安全认证的应用问题
查看>>
前端:可视化数据分析探索之Canvas与SVG
查看>>
我的友情链接
查看>>
cisco设备配置时间日期的方法。
查看>>
小网站到大网站的发展历程
查看>>