I have a question about Tree view in pure HTML/CSS/JS files. I can make Tree view with HTML/CSS successfully and get help from w3school, you can see my code here: html file:
var toggler = document.getElementsByClassName("caret");
var i;
for (i = 0; i < toggler.length; i++) {
toggler[i].addEventListener("click", function() {
this.parentElement.querySelector(".nested").classList.toggle("active");
this.classList.toggle("caret-down");
})
}
ul, .menu {
list-style-type: none;
}
.menu {
margin: 0;
padding: 0;
}
.menu a {
text-decoration: none;
}
.caret {
cursor: pointer;
user-select: none; /* Prevent text selection */
}
.caret::before {
content: "\25B6";
color: black;
display: inline-block;
margin-right: 6px;
}
.caret-down::before {
transform: rotate(90deg);
}
.nested {
display: none;
}
.active {
display: block;
}
<ul class="menu">
<li><a href="#"><i class="fa fa-home"></i> Home</a></li>
<li class="caret">
<a href="javascript:void(0);"><i class="fa fa-graduation-cap"></i> Tutorial</a>
<ul class="nested">
<li class="caret">
<a href="javascript:void(0);"><i class="fa fa-chrome"></i> Web Development</a>
<ul class="nested">
<li><a href="#">Blog Project</a></li>
<li><a href="#">CMS Project</a></li>
<li><a href="#">Shop Project</a></li>
<li><a href="#">E-learning Project</a></li>
<li><a href="#">Automasion Project</a></li>
</ul>
</li>
<li class="caret">
<a href="javascript:void(0);"><i class="fa fa-server"></i> Network</a>
<ul class="nested">
<li><a href="#">Comptia</a></li>
<li><a href="#">Windows</a></li>
<li><a href="#">Linux</a></li>
<li><a href="#">CISCO</a></li>
<li><a href="#">MicroTik</a></li>
<li><a href="#">Virtualization</a></li>
<li><a href="#">Security</a></li>
</ul>
</li>
<li class="caret">
<a href="javascript:void(0);"><i class="fa fa-microchip"></i> IOT</a>
<ul class="nested">
<li><a href="#">Concept</a></li>
<li><a href="#">Electronic</a></li>
<li><a href="#">Sensor</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#"><i class="fa fa-archive"></i> Projects</a></li>
<li><a href="#"><i class="fa fa-info-circle"></i> Resume</a></li>
<li><a href="#"><i class="fa fa-envelope-open"></i> Contact me</a></li>
But I have a problem in cascading (Open/close) them in js file, first time that I click on tutorials, that list will open without any problems, but after that when I click on one of the nested lists in it (web development) all of the tree from tutorials is closing.