javascript - 检查元素是否与 JavaScript 中的条件对应
问题描述
我想创建一个具有下一个逻辑的脚本:
let arr = [1, 2, 3, 4, 5, 6, 8];
document.getElementById('outer').innerHTML = arr.map(item =>
`<li > ${item}</li>`
).join(' ');
<ul id="outer">
</ul>
当我单击每个<li>
以检查它是否与下一个条件对应item>3
,以及该项目是否低于 3 以隐藏该元素时。这个场景应该适用于每个元素,所以当我点击另一个元素来应用上面的想法时。我想在没有 CSS 类的情况下做到这一点。怎么可能?可以在这里应用该方法filter()
吗?
解决方案
你可以使用这样的东西。
let arr = [1, 2, 3, 4, 5, 6, 8];
document.getElementById('outer').innerHTML = arr.map(item =>
`<li > ${item}</li>`
).join(' ');
document.querySelectorAll('#outer li').forEach((item) => {
item.addEventListener('click', (e) => {
if(parseInt(e.target.textContent) < 3) {
e.target.style.opacity = 0;
}
});
});
<ul id="outer">
</ul>
最佳实践是将项目值传递给data
属性,而不是将其作为文本。请参阅下面的示例片段。
let arr = [1, 2, 3, 4, 5, 6, 8];
document.getElementById('outer').innerHTML = arr.map(item =>
`<li data-value="${item}">Element ${item}</li>`
).join(' ');
document.querySelectorAll('#outer li').forEach((item) => {
item.addEventListener('click', (e) => {
if(parseInt(e.target.dataset.value) < 3) {
e.target.style.opacity = 0;
}
});
});
li {
list-style: none;
background: #cecece;
text-align: center;
padding: 1rem;
width: 10rem;
margin: 0 0 .25rem 0;
}
<ul id="outer">
</ul>
推荐阅读
- mysql - SQL Query - 为不同的名称添加最大条件
- java - 内置异常长度比预期的短?
- requirejs - 如何控制 requirejs 设置的请求标头?
- powershell - 如何在以亲和力开头的命令窗口中重定向应用程序的输出?
- node.js - 使用 WebSockets 的分布式系统的节点的圆形拓扑 - 如何在拓扑健康时标记所有节点?
- java - Spring 找不到 Autowire 的 Service 或 Repository bean
- javascript - 我如何将 Materialise CSS 和 JavaScript 组件集成到 Svelte 中
- ios - 如何在 Xcode 中为 Watchkitapp 和 Extension 更改代码签名权利
- php - PHP-年和月数组键和内部值排序
- angular - 角度http拦截器重复请求不起作用