javascript - 如何在 if 语句中引用 li
问题描述
我正在尝试一些基本的 Javasript 尝试将类名添加到单击的 li 项目中。这是我到目前为止所得到的。
//click event to toggle todo
ul.addEventListener('click', function(e){
if(e.target && e.target.nodeName == "LI") {
console.log('checked')
this.classList.add("mystyle");
}
});
而不是 console.log 我不知道如何访问实际的 li 点击然后添加类名。这似乎没有引用 li。
解决方案
基本上,如果您已经预定义了列表元素,您可以循环它们并检查它们是否具有您要添加的类。如果您要动态生成列表元素,则必须使用事件委托来添加/删除类。这是预定义列表元素的简单示例 链接在这里
HTML:
<ul class="list-holder">
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
</ul>
JS:
let listElements = document.querySelectorAll('.list-holder li');
for(let i = 0 ; i < listElements.length; i++) {
listElements[i].addEventListener('click', (event) => {
if(!listElements[i].classList.contains('active')) {
listElements[i].classList.add('active');
} else {
listElements[i].classList.remove('active');
}
});
}
如果你只想保留一个带有活动类的元素,这里有一个更新的 jsfiddle Keep active element only one
推荐阅读
- javascript - 如何为使用 CLI 的最新版本的 react native 添加字体?
- python - 在二维码中存储 SQLite 表的行数据
- javascript - 语义 UI 下拉多选删除刷新值
- android - Android 深度链接路径模式
- swift - 读取捆绑中下载的 .swift 文件
- python - 在刮表的第一列添加标题
- finite-element-analysis - 对于屈曲分析,必须将所有力乘以得到的特征值,还是仅乘以压缩载荷?
- xslt - 旁边有相同元素的 xsl 编号
- json - Ansible json 密钥输出
- image - 如何在prefixIcon内的颤动TextFormField中添加图像