[問題] jQuery 執行順序與預期不同

看板Ajax作者 (嚮往湛藍)時間8年前 (2016/11/03 21:06), 8年前編輯推噓6(6019)
留言25則, 8人參與, 最新討論串1/1
先附上程式碼: 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://www.ptt.cc/bbs/Ajax/M.1478178373.A.4D4.html

11/03 21:28, , 1F
你不能append一個不完整的tag到畫面上
11/03 21:28, 1F

11/03 21:28, , 2F
所以最前面的<tr>就自動被轉為<tr></tr>
11/03 21:28, 2F

11/03 21:29, , 3F
真想這樣做就改用字串加法 組成完整的html後再append
11/03 21:29, 3F
原來是這樣!我還一直以為是非同步的問題,因為我上面有發生一個非同步的問題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>"); } 謝謝解惑!

11/07 08:36, , 4F
是你html用法錯誤,td應該放進tr內,而不是丟在指定物件名
11/07 08:36, 4F

11/07 08:36, , 5F
11/07 08:36, 5F
改成像是這樣? 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>"); }

11/07 20:58, , 6F
話說回圈不加{} 真是很不好的寫法阿
11/07 20:58, 6F
以前寫C++習慣迴圈底下只有一行指令就不加大括號了,還是說這樣會造成錯誤? ※ 編輯: charlie0228 (117.56.223.223), 11/08/2016 14:43:23

11/08 15:13, , 7F
不會,只是有人不喜歡
11/08 15:13, 7F

11/08 15:13, , 8F
不過我通常會加一行空白免得別人看的時候誤會
11/08 15:13, 8F

11/08 15:15, , 9F
只要不會造成閱讀障礙,要不要加單行括弧就只是感覺問題
11/08 15:15, 9F

11/08 15:16, , 10F
無所謂好或不好
11/08 15:16, 10F

11/08 22:10, , 11F
之後假如要在迴圈裡多加一行 卻忘了補上括號 就會出錯
11/08 22:10, 11F

11/08 22:10, , 12F
這樣寫本身沒錯 但是是未來出錯的潛在風險
11/08 22:10, 12F

11/08 22:11, , 13F
所以大部份coding style都會規範一定要加括號
11/08 22:11, 13F

11/09 10:16, , 14F
我習慣在插入前就尋找括弧位置,沒有就會加上,所以對我
11/09 10:16, 14F

11/09 10:16, , 15F
來說這不會是潛在風險,而這可以讓我一頁內可以瀏覽的內
11/09 10:16, 15F

11/09 10:17, , 16F
容增加,所以我覺得這只是喜好問題
11/09 10:17, 16F

11/09 10:18, , 17F
如果的確會擔心增加內容時沒補到,那就寫上比較保險
11/09 10:18, 17F

11/09 10:19, , 18F
縮排比這種事情重要多了
11/09 10:19, 18F
真的,我要上來問問題的時候,還要重新排版一次,沒縮排真的會逼死人...

11/09 10:20, , 19F
未來會不會產生那種風險,端看撰寫習慣而定
11/09 10:20, 19F

11/09 11:42, , 20F

11/09 14:50, , 21F
縮排比較重要+1
11/09 14:50, 21F

11/09 14:50, , 22F
Python也沒在用刮號的 但沒縮排的code很噁.....
11/09 14:50, 22F
剛開始學Python,慶幸自己以前有良好縮排習慣...... ※ 編輯: charlie0228 (117.56.223.223), 11/09/2016 15:11:17

11/19 13:34, , 23F
錯在用字串的概念操作jQuery,jQuery創出來的是Html DO
11/19 13:34, 23F

11/19 13:34, , 24F
M 1.td應該加在tr裡 2.未加內容,</tr> </td> 其實並
11/19 13:34, 24F

11/19 13:34, , 25F
不需要
11/19 13:34, 25F
文章代碼(AID): #1O6pP5JK (Ajax)
文章代碼(AID): #1O6pP5JK (Ajax)