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