javascript - 每当我单击列表项时,如何打开和关闭类(class)?

标签 javascript html css

每当我单击列表项时,我都会尝试打开和关闭类(class)。我尝试过几种方法,例如使用 classList.toggle 并将列表元素包装在 anchor 标记中,然后尝试通过该方法将类添加到列表项,但我尝试的东西越多,我就越感到困惑。

下面是我的代码片段。

var li = document.querySelectorAll("li");

li.addEventListener('click', (e) => {

    addDoneClass();//
  });

function addDoneClass() {
  li.className = "done"
}
.done {
  text-decoration: line-through;
}
  <ul>
      <li random="23">Notebook</li>
      <li>Jello</li>
      <li>Spinach</li>
      <li>Rice</li>
      <li>Birthday Cake</li>
      <li>Candles</li>
    </ul>

你可能会看着我的 JavaScript 代码,想知道为什么我这样做,因为我此时非常困惑,这是我尝试的最后一件事。

最佳答案

const elements = document.querySelectorAll("li");

elements.forEach((element) => {
    // First option
    element.addEventListener('click', function() {
        this.classList.toggle('active');
    });
    
    // Second option
    //element.addEventListener('click', function() { customHandle(this); });
    
    // Third option
    //element.addEventListener('click', (e) => customHandle(e.target.closest('li')));
});

// For the second and third options
//function customHandle(element) {
//    element.classList.toggle('active');
//}
li.active {
    text-decoration: line-through;
}
<ul>
    <li>Notebook</li>
    <li>Jello</li>
    <li>Spinach</li>
    <li>Rice</li>
    <li>Birthday Cake</li>
    <li>Candles</li>
</ul>

关于javascript - 每当我单击列表项时,如何打开和关闭类(class)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61016963/

相关文章:

javascript - 我如何 "write"上下文 Canvas 中的图标?

html - 当我使用外部样式表时,Firefox SVG 图像被截断

javascript - 捕获最大化的视口(viewport)宽度

javascript - 如何在 React Native 中更改数组键名称

javascript - 如何使用selectize js从选择框中获取数据值

javascript - 使用 angularjs 将数据保存在 json 本地存储中

javascript - 注册一个元素的鼠标悬停在另一个元素下方

javascript - 设置html时验证

javascript - 单标签 DIV 的 document.getElementById 失败

html - Bootstrap 下拉菜单在移动设备上消失