【发布时间】:2019-05-10 07:58:27
【问题描述】:
我想知道如何在 javascript 中实现手风琴。
以下手风琴功能无法正常工作,将错误声明为
TypeError: Cannot read property 'classList' of null
我卡住了,请帮忙 只需要在 javascript 中执行以下操作。 我已经更新了html、css和javscript代码下面的代码。
<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
}
【问题讨论】:
-
这是在 Google 上弹出的第一个链接:Pure Javascript Accordion
-
@iuliu.net 感谢您的回复,是的,我已经看到了,我已经更新了卡住的代码。
-
您将值
PH传递给您的点击处理函数,并将其附加到accordioncontent_以通过 ID 查找元素……只是没有这样的元素。accordioncontent_PH和accordioncontent_ph是两个不同的东西。
标签: javascript html css accordion