javascript 关于静态方法里的动态变量问题 15

varmdown=function(num){arr[num].style["width"]="200px";}arr[arr.length-1].attachEvent... var mdown=function(num){arr[num].style["width"]="200px";}

arr[arr.length-1].attachEvent('onmousedown',function(){mdown(arr.length-1)});//假设序数0

arr[arr.length-1].attachEvent('onmousedown',function(){mdown(arr.length-1)});//假设序数1
//执行结果,两个元素分别被点击后,传入的Num值都是1;

想要的效果是,每次这个元素被点击时,将此元素在数组中的相应序数传入mdown方法中。

但这个动态添加元素与事件的方法。最后每个元素被点击时所传入的参数num值都是数组中最后一个元素的序数(arr.length-1),而不是相应序数。
如何在添加事件时,将静态常量数值写入参数中?
也就是把function(){mdown(arr.length-1)}中的arr.length-1变为常量。
arr[arr.length-1].attachEvent('onmousedown',function(){mdown(1234)});
展开
 我来答
匿名用户
2012-03-01
展开全部
//兼容不同版本浏览器动态增加事件函数
function _attachEvent(obj, evt, func, eventobj) {
eventobj = !eventobj ? obj : eventobj;
if(obj.addEventListener){
obj.addEventListener(evt, func, false);
} else if(eventobj.attachEvent) {
obj.attachEvent('on' + evt, func);
}
}
var arr = document.getElementsByTagName("a");
function mdown(num){alert(arr[num].href);}
//_detachEvent('onmousedown',function(){mdown(arr.length-1)});//假设序数0
function tesss(){
for(var i=0,len=arr.length;i<len;i++){
_attachEvent(arr[i],'click', function(i){return function(e){mdown(i);}}(i));
}
}
tesss();
//这个程序在a标签上面动态绑定click事件,每次获取对应a标签的链接地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式