javascript - addEventListener mouseenter not
问题描述
我想知道我怎样才能(点击)通过班级孩子的每个元素。如果子元素选择了其他类,我想将计数器设置为 += 1。
毕竟我计划在同一次点击时打印消息:您选择了 0,1,2,3 个元素,类 .SELECTED
你能帮我吗?
const children = document.querySelectorAll('.children');
const selected = document.getElementsByClassName('selected');
const button = document.getElementById('bttn');
let counter = 0;
for (let i = 0; i < children.length; i++) {
children[i].addEventListener('click', () => {
if (children[i].classList.contains('selected')) {
children[i].classList.remove('selected')
} else {
children[i].classList.add('selected')
}
button.addEventListener('click', () => {
for (u = 0; u < children[i]; u++) {
if (children[i].classList == 'selected') {
counter++;
}
}
console.log(counter);
})
})
}
#div {
display: inline-flex;
flex-direction: column;
}
.children {
cursor: pointer;
}
.selected {
background-color: royalblue;
}
<div id="div">
<span class='children selected'>children1</span>
<span class='children'>children2</span>
<span class='children'>children3</span>
</div>
<p><input id="bttn" type='button' value='klik'></p>
解决方案
您可以使用forEach
循环和使用event.target
. 而不是测试一个元素是否包含一个只是为了添加/删除它的类,使用classList.toggle()
.
e.target.classList.toggle('selected');
children
要获得班级总数,selected
您可以简单地执行以下操作:
counter = document.querySelectorAll('.children.selected').length
const children = document.querySelectorAll('.children');
const selected = document.getElementsByClassName('selected');
const button = document.getElementById('bttn');
let counter = 0;
children.forEach(el => {
el.addEventListener('click', (e) => {
e.target.classList.toggle('selected');
})
})
button.addEventListener('click', () => {
counter = document.querySelectorAll('.children.selected').length;
console.log(counter);
})
#div {
display: inline-flex;
flex-direction: column;
}
.children {
cursor: pointer;
}
.selected {
background-color: royalblue;
}
<div id="div">
<span class='children selected'>children1</span>
<span class='children'>children2</span>
<span class='children'>children3</span>
</div>
<p><input id="bttn" type='button' value='klik'></p>
推荐阅读
- google-apis-explorer - google Apps 脚本 API 方法“projects.updateContent”给出错误
- jquery - 将 HTML 内容更改为 Json 内容
- javascript - 什么可能导致 return 语句在 if 代码块中不起作用
- javascript - Javascript scrollIntoView 仅在直接父级中
- python - 如何在每 __ 秒 __ 次打印此消息的情况下实现这一点?
- database - OpenEdge 10.2A - 仅使用 .d1 和旧版本的 .db 文件生成数据库文件
- python - 对列中的所有行对执行操作
- domino-designer-eclipse - Domino Designer V10 性能问题
- django - 使用表单集工厂更新视图不起作用
- php - 带有学说的 Symfony 4:警告:发送 QUERY 数据包时出错。PID=2989