Я хотел бы знать, как реализовать аккордеон в javascript.
Ниже функция аккордеона не работает, сообщая об ошибке как TypeError: Cannot read property 'classList' of null
Я застрял, пожалуйста, помогите, и мне нужно сделать следующеетолько в JavaScriptЯ обновил код ниже HTML, CSS и код JavaScript.
<div class="wrapper">
<div class="card" class="accordioncontent" id="accordioncontent_js">
<p>Implement Accordion in Pure JS</p>
</div>
<div class="card-title">
<h5 class="accordionheader" @click=${this.handleToggle('js')}>JS</h5>
</div>
<div class="card" class="accordioncontent" id="accordioncontent_ph">
<p>Implement Accordion in Pure JS</p>
</div>
<div class="card-title">
<h5 class="accordionheader" @click=${this.handleToggle('ph')}>PH</h5>
</div>
</div>
js
handleToggle(xid){
var aC = this.shadowRoot.querySelectorAll("accordioncontent");
var sc= this.shadowRoot.getElementById("accordioncontent_" + xid)
var i;
for(i = 0; i < aC.length; i++){
var OaC = aC[i];
if(aC[i] != sc){
OaC.classList.remove("show_Content")
}
}
sc.classList.toggle("show_Content");
}
css
.show_Content{
padding:20px 0;
display:block;
border:1px solid #a3a3a3;
border-top:none;
animation:slow-down .5s ease
}
@keyframes slow-down{
from{padding:0;opacity:0}
to{padding:20px 0;opacity:1}
}
.show_Content:before{
content:"";
width:8px;
top:-7px;
left:50%;
display:block;
position:absolute;
border-left:8px solid transparent;
border-right:8px solid transparent;
border-bottom:8px solid #fff
}