作者charlie0228 (嚮往湛藍)
看板Ajax
標題[問題] jQuery 執行順序與預期不同
時間Thu Nov 3 21:06:09 2016
先附上程式碼:
https://jsfiddle.net/AzureBlue/3jbxz02g/
有問題的是JS最後這一段:
for (var i=0;i<row_num;i++) {
$('#reg_t').append("<tr>");
for (var j=0;j<data_num;j++)
$('#reg_t').append("<td>" + getData[i][j] + "</td>");
$('#reg_t').append("</tr>");
}
本來預期執行之後生成的表格欄位會是這樣:
<tr>
<td></td>
<td></td>
.
.
.
<td></td>
</tr>
但是我程式執行完之後,卻是:
<tr></tr>
<td></td>
<td></td>
.
.
.
<td></td>
是哪裡我搞錯了嗎?還是這也是因為非同步處理的問題?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.53.75
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Ajax/M.1478178373.A.4D4.html
1F:→ mrbigmouth: 你不能append一個不完整的tag到畫面上 11/03 21:28
2F:→ mrbigmouth: 所以最前面的<tr>就自動被轉為<tr></tr> 11/03 21:28
3F:→ mrbigmouth: 真想這樣做就改用字串加法 組成完整的html後再append 11/03 21:29
原來是這樣!我還一直以為是非同步的問題,因為我上面有發生一個非同步的問題0.0
我後來自己想到的方法也是改用字串加法,如下:
for (var i=0;i<row_num;i++) {
var text = "<tr>";
for (var j=0;j<data_num;j++)
text += "<td>" + getData[i][j] + "</td>";
$('#reg_t').append(text + "</tr>");
}
謝謝解惑!
4F:→ serotw: 是你html用法錯誤,td應該放進tr內,而不是丟在指定物件名 11/07 08:36
5F:→ serotw: 上 11/07 08:36
改成像是這樣?
for (var i=0;i<row_num;i++) {
$('#reg_t').append("<tr></tr>");
for (var j=0;j<data_num;j++)
$('#reg_t tr:last-child').append("<td>" + getData[i][j] + "</td>");
}
6F:推 mintle: 話說回圈不加{} 真是很不好的寫法阿 11/07 20:58
以前寫C++習慣迴圈底下只有一行指令就不加大括號了,還是說這樣會造成錯誤?
※ 編輯: charlie0228 (117.56.223.223), 11/08/2016 14:43:23
7F:推 Peruheru: 不會,只是有人不喜歡 11/08 15:13
8F:→ Peruheru: 不過我通常會加一行空白免得別人看的時候誤會 11/08 15:13
9F:→ Peruheru: 只要不會造成閱讀障礙,要不要加單行括弧就只是感覺問題 11/08 15:15
10F:→ Peruheru: 無所謂好或不好 11/08 15:16
11F:推 Kenqr: 之後假如要在迴圈裡多加一行 卻忘了補上括號 就會出錯 11/08 22:10
12F:→ Kenqr: 這樣寫本身沒錯 但是是未來出錯的潛在風險 11/08 22:10
13F:→ Kenqr: 所以大部份coding style都會規範一定要加括號 11/08 22:11
14F:推 Peruheru: 我習慣在插入前就尋找括弧位置,沒有就會加上,所以對我 11/09 10:16
15F:→ Peruheru: 來說這不會是潛在風險,而這可以讓我一頁內可以瀏覽的內 11/09 10:16
16F:→ Peruheru: 容增加,所以我覺得這只是喜好問題 11/09 10:17
17F:→ Peruheru: 如果的確會擔心增加內容時沒補到,那就寫上比較保險 11/09 10:18
18F:→ Peruheru: 縮排比這種事情重要多了 11/09 10:19
真的,我要上來問問題的時候,還要重新排版一次,沒縮排真的會逼死人...
19F:→ Peruheru: 未來會不會產生那種風險,端看撰寫習慣而定 11/09 10:20
21F:推 youtuuube000: 縮排比較重要+1 11/09 14:50
22F:→ youtuuube000: Python也沒在用刮號的 但沒縮排的code很噁..... 11/09 14:50
剛開始學Python,慶幸自己以前有良好縮排習慣......
※ 編輯: charlie0228 (117.56.223.223), 11/09/2016 15:11:17
23F:→ xdraculax: 錯在用字串的概念操作jQuery,jQuery創出來的是Html DO 11/19 13:34
24F:→ xdraculax: M 1.td應該加在tr裡 2.未加內容,</tr> </td> 其實並 11/19 13:34
25F:→ xdraculax: 不需要 11/19 13:34