【发布时间】:2021-05-04 20:30:50
【问题描述】:
我有一个我想要的包装容器,所以当我点击每条信息仅针对该包装显示的名称时,当我单击/关闭“x”按钮时,它只会为该按钮删除它。
使用forEach() 方法,它会显示并删除所有内部容器,除了那些被点击的容器。
我认为可以使用 this 关键字,但我无法让它工作。
我是 Javascript 新手,因此非常感谢任何帮助。
Codepen:https://codepen.io/anna_paul/pen/JjWPLjx
window.addEventListener('DOMContentLoaded', function() {
let name = document.querySelectorAll('.name')
let close = document.querySelectorAll('.close')
let innerText = document.querySelectorAll('.inner-text')
// ----- show text
name.forEach(function(item){
item.addEventListener('click', function(){
innerText.forEach(function(inner){
inner.classList.add('active')
})
}, false)
})
// ---- hide text
close.forEach(function(item){
item.addEventListener('click', function(){
innerText.forEach(function(inner){
inner.classList.remove('active')
})
}, false)
})
}) // DomContentLoaded
* {position: relative; box-sizing: border-box;}
body {
margin: 0;
height: 100vh;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.wrapper {
width: 10rem;
background: #fafafa;
padding: 1rem;
margin: 1rem;
}
.inner-text {
background: red;
display:none;
}
.inner-text.active {
display: block
}
.close {
position: absolute;
top: -5rem;
right: 0rem;
padding: .5rem;
background: white;
z-index: 2;
}
.name {
background: yellow;
padding: 1rem;
cursor: pointer;
}
<div class="wrapper">
<p class="name">Name</p>
<div>Other content</div>
<div class="inner-text">
<div class="close">x</div>
<ul>
<li>INFO</li>
<li>INFO</li>
<li>INFO</li>
<li>INFO</li>
<li>INFO</li>
</ul>
</div>
</div>
<div class="wrapper">
<p class="name">Name</p>
<div>Other content</div>
<div class="inner-text">
<div class="close">x</div>
<ul>
<li>INFO</li>
<li>INFO</li>
<li>INFO</li>
<li>INFO</li>
<li>INFO</li>
</ul>
</div>
</div>
【问题讨论】:
标签: javascript foreach onclick dom-events