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"