w3053_5fdf588 2011-02-12 17:12
浏览 206
已采纳

关于each和js中的for

下面得代码用each的话会得到正确结果
0
123
1
456

但是用for的话会得到
2
a[]为null或不是对象

为什么啊.......求解释啊


$(document).ready(function(){
var a=[{name:"123"},{name:"456"}];
for(i=0;i<a.length;i++){
var b=a[i].name;
$("#row"+i).click(function(){
alert(i);
alert(a[i].name);
});
}
});
$(document).ready(function(){
    var a=[{name:"123"},{name:"456"}];
    $.each(a,function(in){
        var b=a[i].name;
        $("#row"+i).click(function(){
            alert(i);
            alert(a[i].name);
            alert(n.name);
        });
    });
});

<table border="2">
<tr id="row0"><td>1</td></tr>
<tr id="row1"><td>2</td></tr>
</table>

  • 写回答

2条回答 默认 最新

  • TheThird3 2011-02-12 17:12
    关注

    [code="java"]<!DOCTYPE html>




    111

    222

    zzz

    <br> var divs= document.getElementsByTagName(&quot;div&quot;)<br> for(var i = 0;i<divs.length;i++){<br> divs[i].onclick=(function(z){<br> return function(){<br> alert(z)<br> return false;<br> }<br> })(i)<br> }<br>


    [/code]
    代码在点击的时候才执行。点击的时候已经不存在数组a了并且i也是最后的值2
    如果把for(i=0.....改为for(var i=0.....那么i也不存在了

    请搜索"闭包"

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 UE5#if WITH_EDITOR导致打包的功能不可用
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真
  • ¥15 mars2d在vue3中的引入问题
  • ¥50 h5唤醒支付宝并跳转至向小荷包转账界面
  • ¥15 算法题:数的划分,用记忆化DFS做WA求调