i tried to add and remove the text of a box clicking on a different series of p this is the code. click1 is associated by text1 and same click2 text2 ecc. the goal i want to achieve is click on click1 and the only text that appears is text1 same thing for click2 text2 ecc.
let container = document.querySelector(".container");
container.addEventListener("click", ({
target
}) => {
if (target.nodeName !== "P") return; // return if p is not clicked
Array.from(document.querySelectorAll(".container1>p")).forEach(p => p.classList.remove("active1")); // make the others inactive
target.classList.toggle("active1");
}) .container1 p {
display: none;
}
.container1 p.active1 {
display:initial;
} <div class="container">
<p class="active">click1</p>
<p>click2</p>
<p>click3 </p>
<p>click4</p>
<p>click5</p>
</div>
<div class="container1">
<p class="active1">
text1
</p>
<p>
text 2
</p>
<p>
text 3
</p>
<p>
text 4
</p>
</div>Advertisement
Answer
let container = document.querySelector(".container");
let p_in_container = document.querySelectorAll(".container>p");
let p_in_container1 = document.querySelectorAll(".container1>p");
container.addEventListener("click", ({target}) => {
if (target.nodeName !== "P") return; // return if p is not clicked
var idx_clicked = Array.from(p_in_container).indexOf(target);
var target_p = p_in_container1[idx_clicked];
// var is_active = target_p.classList.contains('active1');
Array.from(p_in_container1).forEach(p => p.classList.remove("active1")); // make the others inactive
// p_in_container1[idx_clicked].classList.toggle("active1", !is_active);
p_in_container1[idx_clicked].classList.toggle("active1");
;
}) .container1 p {
display: none;
}
.container1 p.active1 {
display:initial;
} <div class="container">
<p class="active">click1</p>
<p>click2</p>
<p>click3 </p>
<p>click4</p>
<p>click5</p>
</div>
<div class="container1">
<p class="active1">
text1
</p>
<p>
text 2
</p>
<p>
text 3
</p>
<p>
text 4
</p>
<p>
text 5
</p>
</div>