JavaScript仅对onclick元素应用classList.toggle
我的待办事项列表应用程序中有一个生成HTML的函数:JavaScript仅对onclick元素应用classList.toggle,javascript,dom,this,Javascript,Dom,This,我的待办事项列表应用程序中有一个生成HTML的函数: function updateResults() { listItems = todos.reduce((result, item) => { result += `<li class="todo">${item}<div class="controls"> <span class="check" onclick="ch
function updateResults() {
listItems = todos.reduce((result, item) => {
result += `<li class="todo">${item}<div class="controls">
<span class="check" onclick="checkItem()"></span><span class="delete">🗑</span></div></li>`;
return result;
}, '');
resultElement = document.getElementById('result');
// Set inner HTML
resultElement.innerHTML = listItems;
}
我想在这里使用“this”关键字,对吗?我尝试了一系列不同的语法,但无法仅针对使用“checked”类单击的元素
非常感谢。我建议删除内联的
onclick
(以及您的checkItem
函数),并创建这样的事件列表输入程序
// listen to all clicks on your page
window.addEventListener('click', (event) => {
// if the clicked element has a class named check
if (event.target.classList.contains('check')) {
// remove or add the class checked only from this element
event.target.classList.toggle('checked')
}
})
这样,只有带有check
class的单击元素才能应用checked
class
您可以阅读更多关于
addEventListener
的信息,最好的建议是停止使用内联onclick
并使用不引人注目的事件侦听器。您在代码(大约2016年)和1990年代的事件方法中使用了非常现代的ES6 spread运算符感谢您,这是一个有效的解决方案和更干净的编写方法。
// listen to all clicks on your page
window.addEventListener('click', (event) => {
// if the clicked element has a class named check
if (event.target.classList.contains('check')) {
// remove or add the class checked only from this element
event.target.classList.toggle('checked')
}
})