--这样试试
for(int i;i <10;i++) 

  var eqpID = i;//eqpID取值 
  alert(eqpID);//这里可以看到每次循环取到的值是不同的 
  document.getElementById('图片名称').onclick = function(eqpID)
  { 
     showNewWin(eqpID)
  }(eqpID); 

解决方案 »

  1.   

    这个问题常会遇到!JavaScript中没有块作用域,意思就是,像for循环里的变量,它们的作用域仍然是循环所在的函数主体中或再往上,而不存在每次for会保留一个值,如:
    <script type="text/javascript">var a = [];var f = function(n){alert(n);};for(var i=0;i<3;i++){
        a.push(function(){f(i)});//这个时候i是引用,在f执行时,找到的是循环结束后的i
    }for(var b=0;b<a.length;b++){
        a[b]();//找到的i是上上面循环结束后的i
    }
    处理方法 利用闭包:
    <script type="text/javascript">var a = [];var f = function(n){alert(n);};for(var i=0;i<3;i++){
        a.push((function(x){return function(){f(x)};})(i));
    }for(var b=0;b<a.length;b++){
        a[b]();
    }
    </script>
    处理方式2 with与闭包的等同性<script type="text/javascript">var a = [];var f = function(n){alert(n);};for(var i=0;i<3;i++){
        with({i:i}){
            a.push(function(){f(i)});
        }
    }for(var b=0;b<a.length;b++){
        a[b]();
    }
    </script>
      

  2.   

    谢谢啊,找到答案了,跟你的这个方法应该是一样的。
    (function(eqpID){
      document.getElementById(eqpNameEn).onclick = function(){ showNewWin(eqpID)}})(eqpID)
    有人说是做一个闭包,将eqpID这个参数固定在function里面。
    以后要多学习。
      

  3.   

    更多关于JavaScript作用域ScopeJavascript闭包的文章请参见web前端专家dhtml精英俱乐部博客!
      

  4.   

    感觉你的程序本意就是要把最后的ID赋给它,程序没有错
    一个图片怎么会有10个onclick事件,你只是在不断的更新,当然最后就是最后的ID了