这是闭包为同一变量造成。
可以用其他方式搞定:
for (var i = 0; i < obj_all.length; i++) {
var obj = obj_all[i]; 
obj.attachEvent("onclick", function(){alert(event.srcElement.id)});
}当然只适用于IE

解决方案 »

  1.   

    <html>  
      <body>      
      <input  type="button"  id="btnOpr_1"  value="下载" />  
      <input  type="button"  id="btnOpr_2"  value="下载" />  
      <input  type="button"  id="btnOpr_3"  value="下载" />  
      <input  type="button"  id="btnOpr_4"  value="下载" />  
      <input  type="button"  id="btnOpr_5"  value="下载" /> 
      <a href="javascript:change()">改变按钮值 </a>      
      </body>  
      <script> 
      function change(){document.getElementById("btnOpr_5").id="供测试的值";}  
      var  obj_all  =  document.getElementsByTagName("INPUT");  
      //正确的方法 
    /*for(var i=0;i <obj_all.length;i++){ 
    setEvent(obj_all[i]); 

      function setEvent(obj){ 
    obj.attachEvent("onclick",function(){alert(obj.id )}); 
      } */
      //错误的方法 
    for(i=0;i <obj_all.length;i++){  
    var  obj  =  obj_all[i];  
    (function(obj){
    obj.attachEvent("onclick",function(){alert(obj.id)}); 
    })(obj)  
      } 
      </script>  
      </html>  
    闭包问题.......