请教一个闭包函数的问题
时间:2010-05-25
来源:互联网
代码如下,在for循环中,我通过闭包的方式监听事件
问题:如何把监听到的K,return回来呢?
在必包函数中this关键字和原来的this指向不一样了。
问题:如何把监听到的K,return回来呢?
在必包函数中this关键字和原来的this指向不一样了。
复制内容到剪贴板
{
var obj = this;
for(var i=0; i<this.myLink.length; i++)
{
(function(k)
{
addEvent(obj.myLink[k], 'mouseover', function()
{
alert(k);
//alert(this.myLink);
}
);
})(i)
}
}
代码:
this.init = function(){
var obj = this;
for(var i=0; i<this.myLink.length; i++)
{
(function(k)
{
addEvent(obj.myLink[k], 'mouseover', function()
{
alert(k);
//alert(this.myLink);
}
);
})(i)
}
}
作者: feigege 发布时间: 2010-05-25
<ul id="test"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> <script type="text/javascript"> var test = { myLink : document.getElementById("test").getElementsByTagName("li"), init : function(){ var obj = this; for(var i=0; i<this.myLink.length; i++) { (function(k){ addEvent(obj.myLink[k], 'click', function() { alert(k); alert(obj.myLink[k].innerHTML); } ); })(i) } } } function addEvent(oTar, eType, funcHandler) { if (oTar.addEventListener) { oTar.addEventListener(eType, funcHandler, false); } else if (oTar.attachEvent) { oTar.attachEvent("on" + eType, funcHandler); } else { oTar["on" + eType] = funcHandler; } } test.init(); </script>
提示:您可以先修改部分代码再运行
提示:您可以先修改部分代码再运行
作者: cloeft 发布时间: 2010-05-25
引用:
原帖由 cloeft 于 2010-5-25 13:20 发表[html]
1
2
3
4
5
var test = {
myLink : document.getElementById("test").getElementsByTagName("li"),
init : function(){
var obj = this;
for(var i=0; i
作者: feigege 发布时间: 2010-05-25
因为蓝色编辑器不是很好用这里补充下
2楼是得到数据,传出去使用,我需要得到数据仍旧继续执行本函数(或是说当前对象)再进行处理,如何实现呢?
2楼是得到数据,传出去使用,我需要得到数据仍旧继续执行本函数(或是说当前对象)再进行处理,如何实现呢?
作者: feigege 发布时间: 2010-05-25
<ul id="test"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> <script type="text/javascript"> var test = { myLink : document.getElementById("test").getElementsByTagName("li"), init : function(){ var obj = this; for(var i=0; i<this.myLink.length; i++) { (function(k){ addEvent(obj.myLink[k], 'click', function(){ obj.test.call(obj, k); }); })(i) } }, test : function(k){ alert(k); alert(this.myLink[k].innerHTML); } } function addEvent(oTar, eType, funcHandler) { if (oTar.addEventListener) { oTar.addEventListener(eType, funcHandler, false); } else if (oTar.attachEvent) { oTar.attachEvent("on" + eType, funcHandler); } else { oTar["on" + eType] = funcHandler; } } test.init(); </script>
提示:您可以先修改部分代码再运行
是这个意思么? 提示:您可以先修改部分代码再运行
作者: cloeft 发布时间: 2010-05-25
引用:
原帖由 cloeft 于 2010-5-25 14:00 发表[html]
1
2
3
4
5
var test = {
myLink : document.getElementById("test").getElementsByTagName("li"),
init : function(){
var obj = this;
for(var i=0; i
作者: feigege 发布时间: 2010-05-25
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28