When I click on any button it shows same first button output. How can I fix it. I want it be different when I click on different button it should display same output that button has. I want it to be on my website.
function myFunction() {
var x = document.getElementById("out");
if (x.style.display === "block") {
x.style.display = "none";
} else {
x.style.display = "block";
}
}#out {
background-color: green;
display: none;
border-radius: 5px;
padding: 5px 0px 5px 5px;
color: #fff;
}
.output:hover{
background: black;
}
.output{
background:#3b4fe4 ;
color: #fff;
border: 3px solid #fff;
padding: 10px;
width: 150px;
text-align: center;
cursor: pointer;
}
.out{
background: green;
color: #fff;
}<div class="output" onclick="myFunction()">Click me</div> <div id="out"> This is first output </div> <div class="output" onclick="myFunction()">Click me</div> <div id="out"> This is second output </div> <div class="output" onclick="myFunction()">Click me</div> <div id="out"> This is third output </div> <div class="output" onclick="myFunction()">Click me</div> <div id="out"> This is Fourth output </div>
Advertisement
Answer
Using nextElementSibling:
document.querySelectorAll('.output').forEach(e => {
e.addEventListener('click', function(event) {
const x = event.target.nextElementSibling;
if (x.style.display === "block") {
x.style.display = "none";
} else {
x.style.display = "block";
}
})
}).out {
background-color: green;
display: none;
border-radius: 5px;
padding: 5px 0px 5px 5px;
color: #fff;
}
.output:hover {
background: black;
}
.output {
background: #3b4fe4;
color: #fff;
border: 3px solid #fff;
padding: 10px;
width: 150px;
text-align: center;
cursor: pointer;
}
.out {
background: green;
color: #fff;
}<div class="output">Click me</div> <div class="out"> This is first output </div> <div class="output">Click me</div> <div class="out"> This is second output </div> <div class="output">Click me</div> <div class="out"> This is third output </div> <div class="output">Click me</div> <div class="out"> This is Fourth output </div>