作者kiloxx (名器)
看板Web_Design
標題Fw: [問題] jQuery .each index問題
時間Sun Mar 17 19:09:35 2019
※ [本文轉錄自 java 看板 #1SZXGzwb ]
作者: kiloxx (名器) 看板: java
標題: [問題] jQuery .each index問題
時間: Sun Mar 17 17:32:43 2019
大家好~~
(我是超級新手,程式基礎只有python,最近在學習建造dashboard)
想問一個jQuery each的問題: index開始的位子從0變成1了
下圖是我的function,是讓table插入一個新column
source是原本table的data
function add_columns(id, source) {
var $table = $(`#${id}`)
$table.find('tr').each(function (index) {
console.log(source[index], index, source.length);
if ( source[index] != undefined ) {
$(this).find('td').eq(-1).after(`
<td id="${source[index][0]}">
</td>
`
);
}
}
我在console loop出來,假設source = [ [0], [1], [2] ]
[0] , 0, 3
[1] , 1, 3
[2] , 2, 3
undefined, 3, 3
但是我產生出來的對應的td卻只有
<td id=1></td>
<td id=1></td>
<td id=2></td>
<td id=2></td>
null
null
這邊很明顯就是在進到if的時候,index變成1開始了,不是0
請問為什麼會這樣? 是我coding哪裡有問題嗎?還是這是正常的?
我暫時先在if 裡面用index-1來處理掉,但感覺又怪怪的
抱歉打得有點長,麻煩幫忙解惑!!
感恩
// edited 已解決
睡不著突然想通了,$(tr)包含thead,
但是thead 沒有td,所以if statement 裡面才會從1開始
也可以解釋為何多loop一次了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.243.154.240
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1552815165.A.EA5.html
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1552815165.A.EA5.html
1F:→ GGing: JavaScript 也算 Java 的守備範圍嗎?XD03/17 18:30
2F:推 now99: 語言不同吧03/17 18:59
3F:→ kiloxx: 呃~抱歉搞錯了,我轉去web_design03/17 19:09
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: kiloxx (111.243.154.240), 03/17/2019 19:09:35
4F:→ foolray: 這寫法看了真頭痛…需求是加一行然後已經有資料陣列了03/18 00:27
5F:→ foolray: 怎不加進陣列each…03/18 00:27
6F:→ kiloxx: 不好意思,因為我完全是自學,不太明白大大的意思03/18 01:35
7F:→ kiloxx: 我目前對JS的腦容量只能寫出這種function,我也覺得很頭痛03/18 01:35
8F:→ kiloxx: 如果有更好的學習資源,拜託提供給小弟參考!!03/18 01:37
9F:→ foolray: 我試著操作是012 且看console跟輸出都是4個03/18 13:18
10F:→ foolray: 把if內find~after 換成append看看?還是原table的狀況?03/18 13:20
11F:→ foolray: 把if內find~after 換成append看看?還是原table的狀況?03/18 13:20
12F:→ mackliu: 最好有原表格的狀況,不然只是這樣跑起,似乎沒問題03/18 23:47
13F:→ mackliu: 如果你跑起來會有問題,是否那邊打錯字或多加了逗號?03/18 23:48
14F:→ y3k: each()出來應該有index跟value 你加抓value吧03/19 00:27
15F:→ y3k: javascript的callback跑怪怪的時候 建議抓看看function的03/19 00:28
16F:→ y3k: arguments 這個做法可以很快找到問題點03/19 00:28
17F:→ kiloxx: 抱歉今天跑去忙別的東西,我明天再回報03/19 01:56
18F:推 molopo: 每個都console log出來03/20 00:26
還是不知道為什麼...我console看也都是對的...
所以我換了一個寫法先loop source比較好
function add_columns(id, source) {
let $table = $(id);
$.each(source, function (index, value) {
let tr = $table.find('tr');
let td = document.createElement('td');
td.innerHTML = value;
//+1 to skip <thead>
tr[index+1].append(td);
tr[index+1].append(td);
});
};
不好意思打擾大家
※ 編輯: kiloxx (111.248.80.42), 03/20/2019 01:22:01
※ 編輯: kiloxx (111.248.80.42), 03/20/2019 02:11:24
※ 編輯: kiloxx (111.248.80.42), 03/20/2019 02:12:09