最新
文章专题
视频专题
问答1
问答10
问答100
问答1000
问答2000
关键字专题1
关键字专题50
关键字专题500
关键字专题1500
TAG最新
视频文章
推荐1
推荐3
推荐5
推荐7
推荐9
推荐11
推荐13
推荐15
推荐17
推荐19
推荐21
推荐23
推荐25
推荐27
推荐29
推荐31
推荐33
推荐35
推荐37
视频文章20
视频文章30
视频文章40
视频文章50
视频文章60
视频文章70
视频文章80
视频文章90
视频文章100
视频文章120
视频文章140
视频2
关键字专题
关键字专题
tag2
tag3
文章专题
文章专题2
文章索引1
文章索引2
文章索引3
文章索引4
文章索引5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
文章专题3
科技
教育
生活
旅游
时尚
美容
美食
健康
体育
游戏
汽车
元宇宙
家电
财经
百科
科技
首页
业界
互联网
手机
AI
VR
电商
苹果
安卓
6G
5G
数码
测评
学院
鸿蒙
软件
电脑
知识百科
专题
点击下载
本文文档
当前位置:
首页
-
科技
-
知识百科
-
正文
Javascript循环绑定事件的示例代码_javascript技巧
来源:动视网
责编:小采
时间:2020-11-27 20:40:21
Javascript循环绑定事件的示例代码_javascript技巧
Javascript循环绑定事件的示例代码_javascript技巧:例如:一个不确定长度的列表,在鼠标经过某一条的时候改变背景。 Untitled Page 第1条记录 第2条记录 第3条记录 第4条记录 第5条记录 第6条记录 var list_obj = document.getElementById(list).getElementsByTagN
推荐度:
点击下载本文
文档为doc格式
导读
Javascript循环绑定事件的示例代码_javascript技巧:例如:一个不确定长度的列表,在鼠标经过某一条的时候改变背景。 Untitled Page 第1条记录 第2条记录 第3条记录 第4条记录 第5条记录 第6条记录 var list_obj = document.getElementById(list).getElementsByTagN
例如:一个不确定长度的列表,在鼠标经过某一条的时候改变背景。
Untitled Page
第1条记录
第2条记录
第3条记录
第4条记录
第5条记录
第6条记录
var list_obj = document.getElementById("list").getElementsByTagName("li"); //获取list下面的所有li的对象数组 for (var i = 0; i <= list_obj.length; i++) { list_obj[i].onmousemove = function() { this.style.backgroundColor = "#cdcdcd"; } list_obj[i].onmouseout = function() { this.style.backgroundColor = "#FFFFFF"; } } script>
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
这个例子循环为一组对象绑定事件处理函数。
但是,如果我们在这个基础上增加一些需求。比如在点击某一条记录的时候弹出这是第几条记录?
肯能你会理所当然的这么写:
Untitled Page
第1条记录
第2条记录
第3条记录
第4条记录
第5条记录
第6条记录
var list_obj = document.getElementById("list").getElementsByTagName("li"); //获取list下面的所有li的对象数组 for (var i = 0; i <= list_obj.length; i++) { list_obj[i].onmousemove = function() { this.style.backgroundColor = "#cdcdcd"; } list_obj[i].onmouseout = function() { this.style.backgroundColor = "#FFFFFF"; } list_obj[i].onclick = function() { alert("这是第" + i + "记录"); } } script>
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
测试一下你会发现alert出来的都是:这是第6记录
其实这里for循环已将整个列表循环了一遍,并执行了i++,所以这里i变成了6,
有什么好的办法解决这个问题吗?
那就是闭包了,个人认为闭包是js中最难捉摸的地方之一,
看看什么是闭包:
闭包时是指内层的函数可以引用存在与包围他的函数内的变量,即使外层的函数的执行已经终止。
这个例子中我们可以这样做:
Untitled Page
第1条记录
第2条记录
第3条记录
第4条记录
第5条记录
第6条记录
function tt(nob) { this.clickFunc = function() { alert("这是第" + (nob + 1) + "记录"); } } var list_obj = document.getElementById("list").getElementsByTagName("li"); //获取list下面的所有li的对象数组 for (var i = 0; i <= list_obj.length; i++) { list_obj[i].onmousemove = function() { this.style.backgroundColor = "#cdcdcd"; } list_obj[i].onmouseout = function() { this.style.backgroundColor = "#FFFFFF"; } var col = new tt(i); list_obj[i].onclick = col.clickFunc; } script>
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
PS:闭包很难,很复杂!
Javascript循环绑定事件的示例代码_javascript技巧
Javascript循环绑定事件的示例代码_javascript技巧:例如:一个不确定长度的列表,在鼠标经过某一条的时候改变背景。 Untitled Page 第1条记录 第2条记录 第3条记录 第4条记录 第5条记录 第6条记录 var list_obj = document.getElementById(list).getElementsByTagN
推荐度:
点击下载本文
文档为doc格式
标签:
添加的
js
代码
热门焦点
最新推荐
猜你喜欢
热门推荐
专题
Top