先前有筆記如何刪除陣列資料的概念,這次的筆記是延伸應用 splice
的功能。
如何在點擊後,將所選到的清單內容刪除,並更新畫面?
條件如下:
- 原本已有清單內容。
- 有
click
事件。
- 刪除清單資料。
- 更新畫面。
HTML 跟 CSS 與上一篇內容相同,這邊是在 JS 加上一些語法達到效果。先回顧上一篇所講到的內容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| var shops = [{ keeper: '魯夫' }, { keeper: '香吉士' }]
var list = document.querySelector('.list');
function updateList() { var str = ''; var shopLen = shops.length; for (var i = 0; shopLen > i; i++) { str += '<li data-num="' + i + '">' + shops[i].keeper + '</li>' } list.innerHTML = str; console.log(str); } updateList();
function checkList(e) { var num = e.target.dataset.num; console.log(e.target.nodeName); if (e.target.nodeName !== 'LI') { return }; console.log('你選擇的店長為' + shops[num].keeper); }
list.addEventListener('click', checkList, false);
|
這邊要新增的語法在函式 checkList
內的 return
後加上這段程式碼:
1 2
| shops.splice(0, 1); updateList();
|
這樣在點擊後,就可以把選取到的 li
刪掉,函式checkList
完整程式碼如下:
1 2 3 4 5 6 7 8 9
| function checkList(e) { var num = e.target.dataset.num; console.log(e.target.nodeName); if (e.target.nodeName !== 'LI') { return }; shops.splice(0, 1); updateList(); }
|
codepen: https://codepen.io/hnzxewqw/pen/RwPgOdG