[英]How to avoid code duplication in this Javascript code snippet
当用户单击 3 个分别具有 ids 'add' 'delete' 和 'toggle' 的按钮时,我尝试添加、删除和切换类样式到 3 个<li>
。 但是除了 classList 方法名称和按钮 ID 之外,这些代码会重复。
无论如何我可以写一个 function 以避免重复吗?
这是我的代码。
document.querySelector('#add').addEventListener('click',()=>{
document.querySelectorAll('#todos li').forEach((li)=>{
li.classList.add('listStyles');
})
});
document.querySelector('#delete').addEventListener('click',()=>{
document.querySelectorAll('#todos li').forEach((li)=>{
li.classList.remove('listStyles');
})
});
document.querySelector('#toggle').addEventListener('click',()=>{
document.querySelectorAll('#todos li').forEach((li)=>{
li.classList.toggle('listStyles');
})
});
你可以这样做:
function modifyClass(action) {
document.querySelectorAll('#todos li').forEach((li)=>{
li.classList[action]('listStyles');
})
}
document.querySelector('#add').addEventListener('click', ()=>{ modifyClass("add") });
document.querySelector('#delete').addEventListener('click', ()=>{ modifyClass("remove") });
document.querySelector('#toggle').addEventListener('click', ()=>{ modifyClass("toggle") });
如果您将元素#delete
更改为#remove
,您可以这样做:
for (const action of ["add", "remove", "toggle"])
document.getElementById(action).addEventListener("click", ()=>{
document.querySelectorAll('#todos li').forEach((li)=>{
li.classList[action]('listStyles');
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.