用闭包保存状态的实例 - 为页面上所有的a元素添加handler点击时alert index
来源:互联网 发布:word文件翻译软件 编辑:程序博客网 时间:2024/05/13 06:07
和普通function执行的时候传参数一样,
// 这个代码是错误的,因为变量i从来就没背locked住// 相反,当循环执行以后,我们在点击的时候i才获得数值// 因为这个时候i操真正获得值// 所以说无论点击那个连接,最终显示的都是I am link #10(如果有10个a元素的话)var elems = document.getElementsByTagName('a');for (var i = 0; i < elems.length; i++) { elems[i].addEventListener(' click', function (e) { e.preventDefault(); alert('I am link #' + i); }, 'false');}// 这个是可以用的,因为他在自执行函数表达式闭包内部// i的值作为locked的索引存在,在循环执行结束以后, 尽管最后i的值变成了a元素总数(例如10) // 但闭包内部的lockedInIndex值是没有改变,因为他已经执行完毕了 // 所以当点击连接的时候,结果是正确的var elems = document.getElementsByTagName('a');for (var i = 0; i < elems.length; i++) { (function (lockedInIndex) { elems[i].addEventListener(' click', function (e) { e.preventDefault(); alert('I am link #' + lockedInIndex); }, 'false'); })(i);}// 你也可以像下面这样应用,在处理函数那里使用自执行函数表达式// 而不是在addEventListener外部// 但是相对来说,上面的代码更具可读性var elems = document.getElementsByTagName( 'a');for (var i = 0; i < elems.length; i++) { elems[i].addEventListener(' click', (function (lockedInIndex) { return function (e) { e.preventDefault(); alert('I am link #' + lockedInIndex); }; })(i), 'false');}
其实,上面2个例子里的lockedInIndex变量,
该内容是深入理解JavaScript系列(4):
0 0
- 用闭包保存状态的实例 - 为页面上所有的a元素添加handler点击时alert index
- 2,JQuery学习-为页面的元素添加点击事件
- jQuery检测页面当中id为a的元素是否添加了click事件
- 点击ul下的li时alert其index值(闭包的应用)
- 点击ul下的li时alert其index值(闭包的应用)
- 当页面上任意一个链接被点击的时候,alert出这个链接在页面上的顺序号
- jquery为动态生成的元素添加点击事件
- jquery:为动态加载的元素添加点击事件
- 点击页面上某个元素实现动画的滚动效果
- 用JS取得页面上所有元素的值
- Swift - 移除页面视图上的所有元素
- 糊糊的前端学习笔记——a标签点击跳转页面后,为被点击的a标签添加样式【Day1】
- TimerTask,Timer,Handler。监听edittext的内容是否为空, 为空:保存按钮不可点击 不为空:保存按钮可点击
- 将页面上的table保存为excel
- 写模态对话框的问题:运用this.index 为元素添加事件
- jquery的$.alerts.alert怎么实现点击后跳转页面
- 为非回调页面保存状态
- [delphi技术]实现保存窗口上的所有Edit和checkbox状态的类
- UVA 437 The Tower of Babylon
- 黑马程序员(OC的三大特性)
- 深入理解JavaScript系列(3):全面解析Module模式(注释)
- Android 测试工具Monkey
- AudioFlinger,AudioPolicyService and Audio track分析
- 用闭包保存状态的实例 - 为页面上所有的a元素添加handler点击时alert index
- 笔记74--跳转到系统应用中的拨号界面、联系人界面、短信界面及其他
- 两台linux完美实现双机热备
- Google 验证码
- 飞飞飞哥哥
- 让服务器iis支持.apk文件下载的设置方法
- window.btoa/window.atob
- 几个JavaScript的题目
- 服务于进程