2017-05-20 41 views
1

我有存儲5個值中的localStorage像這樣:嵌套()環路跳過值

localStorage.setItem( '介質 _highscore', 「Test_user,99999,99:59,9」) ; localStorage.setItem('medium _highscore',「Test_user1,99999,99:59,9」);

和我嘗試使用下面的代碼將它們添加到表:

$('#medium tr').each(function(k) { 
    var info2 = localStorage.getItem("medium" + k + "_highscore"); 
    var t_info2 = info2.split(","); 
    $(this).find('td').each(function(j) { 
     $(this).html(t_info2[j]); 
    }); 
    }); 

我的問題是存儲的第一個值被跳過,我包括一串警報找我爲什麼,我發現,在var t_info2 = info2.split(",");行忽略下面的代碼後,第一個循環中的索引「k」跳到1。

確定它的東西非常簡單,但我沒有看到它。

+0

看起來像你的代碼工程。也許這是你的本地存儲問題https://codepen.io/anon/pen/YVRxqB?editors=1010 –

+0

看起來你是對的,我不知道它是什麼。 –

回答

1

請問您的餐桌有第一個<tr>這是一個帶有<th>標籤的標題行嗎?如果是這樣,請嘗試使用$('#medium tr:has(td)')而不是$('#medium tr')

由於您描述的行爲,這是唯一的可能性。第一次迭代是在這一行中,因爲它沒有<td>標記,在var t_info2 = info2.split(",");之後的代碼將不會執行任何操作。

+1

就是這樣!感謝您的保存。 –

+1

更好地使用'$('#medium')。find('tr:has(td)')'來幫助從右到左的sizzle引擎解析。 –