动态组件动态添加onclick事件的参数设置问题 for(va i = 0;i<10;i++){ document.createElement('a'); a.onclick=function(){ sign('怎么把i设置为参数,不至于每次i都被覆盖');};}function sign(id){ alert(id);} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <html><head><script>window.onload = function() { for(var i = 0;i<10;i++){ var link = document.createElement('a'); link.innerHTML = "点击" + i; link.href = "javascript:;"; link.style.display = "block"; document.getElementsByTagName("body")[0].appendChild(link); function fun(ii) { this._ii = ii; this.bindlist = function() { sign(this._ii); }; } var funs = new fun(i); link.onclick = funs.bindlist.bind(funs); }};function sign(id){ alert(id);}Function.prototype.bind = function(obj) { // 对Function原型bind方法申明 var method = this; // this指向调用方法method temp = function() { return method.apply(obj, arguments); //返回method // 这里指method接受obi为this;即指method方法内的this现在指向obj; }; return temp;};</script></head><body></body></html> 这是有一次我在别的论坛上看到的别人总结的方法,一开始可能会看得不是很明白,要对javascript的语法要有一定的深入了解才可以。这个方法,如果要迁移到地方,要改的地方只有两个: this.bindlist = function() { sign(this._ii); }; 这里的sign(this._ii)是点击后要执行的函数,this._ii是传来的参数,要作其它处理只需要改一下就可以了。 var funs = new fun(i); link.onclick = funs.bindlist.bind(funs); 这里new fun(i);中的i是传给要处理的方法sign(i)的参数,要传其它参数改一个就可以了。 如果要传多个参数,也可以: function fun(ii,ii2,ii3,...) { this._ii = ii; this._ii2 = ii2; .... this.bindlist = function() { sign(this._ii,this._ii2); }; } var funs = new fun(i,i2,i3...); link.onclick = funs.bindlist.bind(funs); 如果有其它好的方法,也希望能一起交流交流哈~ other`s:1、link.onclick = function(j){ return function(){ sign(j) }}(i)2、link.onclick = Function("j", "return function(){sign(j)}")(i)3、with({i:i}) link.onclick = function(){sign(i)}; 关于jquery .load()问题 跪求一个基于jsp的车辆租赁系统,谢了 document.domain能直接进行赋值操作吗? html页面中用了大量的javascript脚本,造成阅读页面很困难,有什么办法能让javascript脚本隐藏起来? js 中怎么让input输入框选中部分内容 JS 在、select 中选择一条记录其他的选择项跟着变动 按自己自定义的时间的顺序排列发布的通告, 如何实现以下效果? sw47(我爱编程,脑筋好好,嗷嗷嗷嗷嗷...)接分 空指针异常怎么处理 求高人帮忙啊!!!1急在线等 一个页面多个表单如何实现 为什么图片不能重叠?大家帮忙改下
<html>
<head>
<script>
window.onload = function() {
for(var i = 0;i<10;i++){
var link = document.createElement('a');
link.innerHTML = "点击" + i;
link.href = "javascript:;";
link.style.display = "block";
document.getElementsByTagName("body")[0].appendChild(link);
function fun(ii) {
this._ii = ii;
this.bindlist = function() {
sign(this._ii);
};
}
var funs = new fun(i);
link.onclick = funs.bindlist.bind(funs);
}
};
function sign(id){
alert(id);
}Function.prototype.bind = function(obj) {
// 对Function原型bind方法申明
var method = this;
// this指向调用方法method
temp = function() {
return method.apply(obj, arguments); //返回method
// 这里指method接受obi为this;即指method方法内的this现在指向obj;
};
return temp;
};
</script>
</head>
<body>
</body>
</html>
这是有一次我在别的论坛上看到的别人总结的方法,一开始可能会看得不是很明白,要对javascript的语法要有一定的深入了解才可以。这个方法,如果要迁移到地方,要改的地方只有两个: this.bindlist = function() {
sign(this._ii);
}; 这里的sign(this._ii)是点击后要执行的函数,this._ii是传来的参数,要作其它处理只需要改一下就可以了。 var funs = new fun(i);
link.onclick = funs.bindlist.bind(funs); 这里new fun(i);中的i是传给要处理的方法sign(i)的参数,要传其它参数改一个就可以了。
如果要传多个参数,也可以: function fun(ii,ii2,ii3,...) {
this._ii = ii;
this._ii2 = ii2;
....
this.bindlist = function() {
sign(this._ii,this._ii2);
};
}
var funs = new fun(i,i2,i3...);
link.onclick = funs.bindlist.bind(funs);
如果有其它好的方法,也希望能一起交流交流哈~
1、
link.onclick = function(j){
return function(){
sign(j)
}
}(i)2、
link.onclick = Function("j", "return function(){sign(j)}")(i)3、
with({i:i}) link.onclick = function(){sign(i)};