js为li列表添加点击事件
来源:互联网 发布:手游数据查询 编辑:程序博客网 时间:2024/06/05 08:07
今天看到一个面试题目
//html代码<body> <ul> <li>1</li> <li>2</li> <li>3</li> </ul></body>//js代码var oli = document.getElementsByTagName("li"); for(var i=0; i<oli.length; i++){ oli[i].onclick = function () { alert(i); };
想给每个li添加点击事件,并打印出当前的index值。
很明显这样写并没有实现最终的结果。不管点击哪一个li都只打印了一个结果就是3。并没有得到我们想要的。到底什么原因呢?
onclick是一个事件,这个事件委托了并没有去触发,只有触发的时候才会调用回调函数,代码自上而下运行这时候i的值已经变为3了所以每个点击事件的回调结果都是3。那么如何去实现呢?看如下代码
var oli = document.getElementsByTagName("li"); for(var i=0; i<oli.length; i++){ (function(j){ oli[j].onclick = function () { alert(j); }; })(i)
这样的话点击不同的li就会打印对应的Index值。
说白了就是改变i的作用域,保留他的值,因为上面的代码i的作用域是全局的,所以打印的结果都是3,现在是作为实参传递到匿名函数当中,并调用,变成形参写到了事件当中,这样就改变掉了他的作用域,也就是将他原来有的值保留了下来。所以结果就是打印对饮的index值
阅读全文
0 0
- js为li列表添加点击事件
- js-动态添加li、option,并且添加其点击事件
- js循环遍历ul中li的点击事件,给给选中li添加css
- JS为表格每行添加点击事件
- js 点击列表li,获得当前li的id
- 4种方法解决为 li列表 添加事件问题(for循环经典问题)
- js实现点击哪个li哪个li背景为红色
- 通过js动态为标签元素添加点击事件
- JS为循环动态生成的节点添加点击事件
- JS为循环动态生成的节点添加点击事件
- 为js生成的class添加点击事件
- 【ASP.NET】3.为GridView每行添加js点击事件
- 为UILabel添加点击事件
- 为UIView添加点击事件
- 为UIView添加点击事件
- 为UIView添加点击事件
- js 循环添加点击事件
- js动态添加点击事件
- GoldenGate 传统抽取进程随 DataGuard 主备快速切换的方案(ADG 模式)
- [POJ] 2528
- java注解
- Ubuntu 16.04 (linux)下MySQL的安装
- Thread和Runnable之间的关系
- js为li列表添加点击事件
- tensorflow常用函数介绍
- PAT (Basic Level) Practise (中文)1035. 插入与归并(25)
- Centos7安装mariadb-server
- 【安全牛学习笔记】CCNA简介
- 【爬虫初级】爬取百度百科静态页面数据案例
- 关于C++里面使用set_union,set_intersection等函数的使用总结
- 阶乘及平方
- 业务模型-电商网站用户登录与购物车的关系