javascript - javascript不同的背景点击
问题描述
我正在使用列表来创建“选择前 3 名”,并且我正在使用 javascript 来收集选择并列出它们。但是,我想更改每个选择的背景,具体取决于它们何时被选中。
第一次选择 -> 绿色背景
第二次选择 -> 黄色背景
第三次选择 -> 红色背景
JavaScript:
events: {
'tap #achieveList li': "makeSelection"
},
makeSelection: function(e) {
var radioBtn = e.target;
var selected = this.el.getElementsByClassName('selected');
if (radioBtn) {
if (radioBtn.classList.contains('selected')) {
radioBtn.classList.remove('selected');
} else if (selected.length < 3) {
radioBtn.classList.add('selected');
}
this.monitorSelections(selected);
}
},
monitorSelections: function(selected) {
if (!selected) return;
var selection = [];
for (var i = 0; i < selected.length; i++) {
selection.push(selected[i].innerHTML);
};
ag.submit.data({
label: "This is top 3",
category: "User input",
value: selection.join(','),
valueType: "list",
path: app.getPath(),
unique: true
});
}
HTML:
<div class="interactive-block">
<ul id="achieveList">
<li>More engagements</li>
<li>Cost efficiencies</li>
<li>Better access</li>
<li>Higher customer value/satisfaction</li>
<li>Become more digital</li>
<li>Better customer insights</li>
</ul>
</div>
解决方案
A)如果我理解你,你不需要图书馆:
let arr = []
const $$li = document.querySelectorAll('li')
$$li.forEach($li => $li.onclick = () => {
// Remove classes
$$li.forEach($li => $li.className = '')
// Add clicked if not included
if (!arr.includes($li)) arr.unshift($li)
// No more than 3
if (arr.length > 3) arr.pop()
// Set classes
arr.forEach(($li, i) => $li.classList.add(`bg${i + 1}`))
})
https://jsfiddle.net/my2tw36d/
使用上面链接的示例单击/点击您的列表项以检查这是否是您要查找的内容。
B)阅读您的评论后,您可以轻松地从我之前的示例中更改 2 个单词。使用反转数组,我们不需要更改我们设置 CSS 类的方式。
// Add selection if not included
if (!arr.includes($li)) arr.push($li)
// No more than 3
if (arr.length > 3) arr.shift()
https://jsfiddle.net/unatfyo5/
C)如果你想在 3 次选择后阻止,那么你需要这个:
if (!arr.includes($li) && arr.length < 3) arr.unshift($li)
https://jsfiddle.net/stLghxor/
希望这有帮助:)
推荐阅读
- angular - 服务器端查询不起作用后,角度数据表填充 dtOptions
- angular - Angular - 错误 TS7030:并非所有代码路径都在 Angular RoleCheck 中返回值
- eclipse - 为什么创建新的 Xtext 项目高级配置中没有 IntelliJ IDEA 插件选项?
- css - 为什么我的 css 闪烁动画不起作用?
- unix - Makefile,遍历目录并排除一些
- javascript - 如何按键自定义排序一维javascript数组
- schemacrawler - 如何使用 Schemacrawler API 在代码中传递 xml linter 配置
- python - msg=非多值复制字段遇到多个值
- javascript - Leaflet - 将自定义图标添加到标记层以与 L.Control.Search 一起使用
- c# - 如何在 dapper 中执行带参数的函数