Skip to content

Commit 2dc55e4

Browse files
author
Jason Barnett
committed
completes 15
1 parent b94e00a commit 2dc55e4

3 files changed

Lines changed: 41 additions & 78 deletions

File tree

09 - Dev Tools Domination/index-START.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
}
1919

2020
// Regular
21+
2122

2223
// Interpolated
2324

15 - LocalStorage/index-FINISHED.html

Lines changed: 0 additions & 77 deletions
This file was deleted.

15 - LocalStorage/index-START.html

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,46 @@ <h2>LOCAL TAPAS</h2>
2828
<script>
2929
const addItems = document.querySelector('.add-items');
3030
const itemsList = document.querySelector('.plates');
31-
const items = [];
31+
const items = JSON.parse(localStorage.getItem('items')) || [];
32+
33+
34+
function addItem(e){
35+
e.preventDefault()
36+
const text = this.querySelector('[name=item]').value
37+
const item = {
38+
text,
39+
done: false
40+
}
41+
items.push(item)
42+
populateList(items, itemsList)
43+
localStorage.setItem('items', JSON.stringify(items))
44+
this.reset()
45+
}
46+
47+
function populateList(plates = [], platesList) {
48+
platesList.innerHTML = plates.map((plate, i) => {
49+
return `
50+
<li>
51+
<input type="checkbox" data-index=${i} id="item${i}" ${plate.done ? 'checked' : ''} />
52+
<label for="item${i}">${plate.text}</label>
53+
</li>
54+
`
55+
}).join('')
56+
}
57+
58+
function toggleDone(e){
59+
const el = e. target
60+
if (!el.matches('input')) return
61+
const index = el.dataset.index
62+
items[index].done = !items[index].done
63+
localStorage.setItem('items', JSON.stringify(items))
64+
populateList(items, itemsList)
65+
}
66+
67+
addItems.addEventListener('submit', addItem)
68+
itemsList.addEventListener('click', toggleDone)
69+
70+
populateList(items, itemsList)
3271

3372
</script>
3473

0 commit comments

Comments
 (0)