日期:2014-05-16  浏览次数:20379 次

for循环怎么添加事件??求解~~
for(var i=0;i<n;i++)
for循环给元素添加事件时貌似只会取变量的最后一步循环中的值。有什么方法可以把中间的值也用上吗??
能举个简单的例子吗?谢谢~~!!

------解决方案--------------------
比如说用return
------解决方案--------------------
闭包喜欢讲它,说到底还是因为i变量“存活下来了”

for(var i=0;i<n;i++){
//...do stuff
}

alert(i) // n-1 跳出来, i根本都还在。

处理方法是把i作为参数传进去,并立即执行

var inputs = document.getElementsByTagName('input');
for (var i = 0; i < inputs.length; i++) {
inputs[i].onclick = (function (k) {
return (function () {
alert(k);
});
})(i);
}

如果循环体内写成
inputs[i].onclick = function () {
alert(i);
};
那么跳出来都是3

------解决方案--------------------
<script type="text/javascript">
function mm(){
alert("第"+this.kk+"按钮");

function init(){
var a=document.getElementsByTagName("input");
for(var i=0;i<a.length;i++){
a[i].kk=i+1;
a[i].onclick=mm;
}
}
</script>
</head>
<body onload="init()">
<input type="button" value="1">
<input type="button" value="2">
<input type="button" value="3">
</body>
给每个对象加个只用来标记的属性试试吧 呵呵 楼上的方法太高端了 完全不懂 呵呵
------解决方案--------------------
JScript code
(function () {
    //anonymous function executed
})();
//=>
var f = function () {
    //named function
};
f();//executed

(function (x) {
    //anonymous function executed with a parameter 
})(i);
==>
var f = function (x) {
    //named function
};
f(i);//executed with parameter "i"