<div class="container py-5">
<ul class="list-group">
</ul>
<div class="input-group mt-3">
<input type="text" class="form-control" placeholder="輸入待辦事項" aria-label="輸入待辦事項">
<div class="input-group-append">
<button class="btn btn-outline-info" type="button">送出</button>
</div>
</div>
</div>
const component = {
data: [
'第一段文字',
'第二段文字'
],
render () {
const list = document.querySelector('.list-group')
const content = this.data.map((item, i) => `
<li class="list-group-item">
${item}
<button type="button" data-index="${i}"
class="btn btn-info btn-sm ml-3">刪除</button>
</li>
`).join('')
list.innerHTML = content
// 刪除執行要寫在渲染後
const btns = document.querySelectorAll('.list-group button')
btns.forEach(item => {
item.addEventListener('click', (e) => {
const id = e.target.dataset.index
this.removeData(id)
})
})
},
addData () {
const text = document.querySelector('.input-group input')
const addBtn = document.querySelector('.input-group button')
addBtn.addEventListener('click', () => {
const newText = text.value
text.value = '' // 清空輸入框
this.data.push(newText)
this.render() // 重新渲染畫面
})
},
removeData (id) {
this.data.splice(id, 1)
this.render()
},
init () {
this.render()
this.addData() // 先註冊並等待點擊後執行
}
}
component.init()
This Pen doesn't use any external JavaScript resources.