作者zzpop (给我极品其余免谈)
看板Ajax
标题[问题] jquery两段程式码的差别
时间Sat Jun 30 23:35:43 2012
各位大大晚安
最近发现一个很奇怪的问题
几乎相同的两段程式码
( 把不能跑的其中一段拉出来独立成 function )
一个能跑一个却会出现错误
不知道自己想法与逻辑上是哪里出了问题?
恳请各位大大指导一下我的观念
非常非常感谢!!! T_T
程式码如下:
会有错误的:
for(var i=0; i<thnum; i++){
$("th:eq("+i+")").bind("click",function(){
for(var j=1; j<trnum; j++){
$("table tr:eq("+j+") td:eq("+i+")").text(c[i][j-1]);
$("span").append(c[i][j-1]+",");
}
c[i].reverse();
}); 把绿色这段拉出来变成function
}
改成这样却没有错误了
for(var i=0; i<thnum; i++){
aa(i);
}
function aa(i){
$("th:eq("+i+")").bind("click",function(){
for(var j=1; j<trnum; j++){
$("table tr:eq("+j+") td:eq("+i+")").text(c[i][j-1]);
$("span").append(c[i][j-1]+",");
}
c[i].reverse();
});
}
非常感谢各位大大了...T_T
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.127.180.41
※ 编辑: zzpop 来自: 59.127.180.41 (06/30 23:37)
※ 编辑: zzpop 来自: 59.127.180.41 (06/30 23:37)
1F:推 s25g5d4:为什麽不用each 06/30 23:37
2F:推 s25g5d4:我知道问题在哪 可是我不太会讲...第一段code中的i并不会 06/30 23:41
3F:推 ChowMein:i不对,用个方式保留状态吧 06/30 23:41
4F:→ s25g5d4:每次都反应到bind第二个参数的昵名function内 06/30 23:42
5F:→ ChowMein:第二个因为closure, 所以找得到i 06/30 23:42
6F:→ s25g5d4:要马执行时就是找不到i 不然就是每次都抓到for回圈跑到最 06/30 23:42
7F:→ s25g5d4:後一次时i的值 06/30 23:42
8F:→ zzpop:喔喔喔我再试试看,不用each是因为要一格对应到一格 06/30 23:43
9F:→ s25g5d4:嗯 ChowMein讲的太棒了 我还是去旁边蹲吧... 06/30 23:43
10F:→ zzpop:用阵列的方式先记录每一格的内容,在依序填入 06/30 23:43
11F:→ s25g5d4:老实说我觉得你用each搞不好还不会发生这个问题.. 06/30 23:44
12F:→ zzpop:谢谢大大指导观念,我在研究看看,大感恩 T_T 06/30 23:44
13F:推 mrbigmouth:这种情况我比较喜欢不个别绑定 07/01 08:13
14F:→ mrbigmouth:而是直接榜$("th").bind('click') 07/01 08:13
15F:→ mrbigmouth:先快取$("th") fn里再用$th.index(this)去抓位置 07/01 08:14
16F:→ legnaleurc:用 each 你还是可以知道目前的 index 07/02 06:12