ToDoList案例原生js代码
- 产生列表 根据数组中的对象{name:‘看电视’,status:true} 在ul中产生li
- 添加功能 输入框内容改变的时候(onchange),创建 这样的对象{name:‘看电视’,status:true} ,添加到数组中,重新生成列表,也就是 执行1那个操作
- 删除功能 点击按钮的时候,找到数组中对应的对象,从数组中删除了, 重新生成列表,也就是 执行1那个操作
- 修改功能 点击按钮的时候,找到数组中对应的对象,修改属性, 重新生成列表,也就是 执行1那个操作
<input type="text" class="sendBtn">
<h2>未完成</h2>
<ul class="list1">
<!-- <li>
<input type="checkbox" name="" id="" value="" />
<span id="">
看电视
</span>
<button type="button">删除</button>
</li> -->
</ul>
<h2>已完成</h2>
<ul class="list2">
<!-- <li>
<input type="checkbox" name="" id="" value="" checked="checked"/>
<span id="">
打游戏
</span>
<button type="button">删除</button>
</li> -->
</ul>
let sendBtn = document.querySelector('.sendBtn');
let arr = [
{
name: '看电视',
status: false
},
{
name: '玩游戏',
status: true
},
];
render()
sendBtn.onchange = function() {
let name = sendBtn.value;
let obj = {
name: name,
status: false
};
arr.push(obj);
render()
}
function render() {
let list1 = document.querySelector('.list1')
let list2 = document.querySelector('.list2')
let list1Html = '';
let list2Html = '';
for (let i = 0; i < arr.length; i++) {
let obj = arr[i];
if (obj.status == false) {
list1Html +=
`
<li>
<input type="checkbox" name="" id="" value="" data-name="${obj.name}"/>
<span id="">
${obj.name}
</span>
<button type="button" class="dBtn" data-name="${obj.name}">删除</button>
</li>
`
} else {
list2Html +=
`
<li>
<input type="checkbox" name="" id="" value="" checked="checked" data-name="${obj.name}"/>
<span id="">
${obj.name}
</span>
<button type="button" class="dBtn" data-name="${obj.name}">删除</button>
</li>
`
}
}
list1.innerHTML = list1Html
list2.innerHTML = list2Html
let dBtns = document.querySelectorAll('.dBtn');
for (let i = 0; i < dBtns.length; i++) {
dBtns[i].onclick = function() {
let name = this.getAttribute('data-name');
arr = arr.filter(v => v.name !== name)
render()
}
}
let editBtns = document.querySelectorAll('input[type=checkbox]')
console.log(editBtns)
for(let i=0;i<editBtns.length;i++){
editBtns[i].onchange = function(){
console.log(this.checked)
let name = this.getAttribute('data-name');
let obj = arr.find(v=>v.name === name);
console.log(obj)
obj.status = this.checked;
render()
}
}
}