for(va i = 0;i<10;i++){
    document.createElement('a');
    a.onclick=function(){
       sign('怎么把i设置为参数,不至于每次i都被覆盖');
};
}
function sign(id){
    alert(id);
}

解决方案 »

  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);
        如果有其它好的方法,也希望能一起交流交流哈~
      

  2.   

    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)};