Reputation: 47
I make a site and have a panel's. Part of my site:
<div class="block">
<div class="block-title">
<h1>Open/close div tag's</h1>
<h2>Some junior's magic</h2>
</div>
<div class="panel-group" id="accordion">
<div class="panel panel-default">
<div class="panel-heading accordion-caret">
<h4 class="panel-title"><a class="accordion-toggle" href="#collapseOne" onclick="openbox('panel1'); return false">Donec quis dui at dolor tempor<span id="open-icon">+</span></a></h4>
</div>
<div class="panel-collapse collapse">
<div id="panel1" class="panel-body" style="display: none;">Morbi in sem quis dui placerat ornare. Pellentesque odio nisi, euismod in, pharetra ultricies in, diam. Sed arcu. Cras consequat.</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading accordion-caret">
<h4 class="panel-title"><a class="accordion-toggle" href="#collapseTwo" onclick="openbox('panel2'); return false">Vivamus molestie gravida turpis<span id="open-icon">+</span></a></h4>
</div>
<div class="panel-collapse collapse">
<div id="panel2" class="panel-body" style="display: none;">Morbi in sem quis dui placerat ornare. Pellentesque odio nisi, euismod in, pharetra ultricies in, diam. Sed arcu. Cras consequat.</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading accordion-caret">
<h4 class="panel-title"><a class="accordion-toggle" href="#collapseThree" onclick="openbox('panel3'); return false">Fusce lobortis lorem at ipsum semper<span id="open-icon">+</span></a></h4>
</div>
<div class="panel-collapse collapse">
<div id="panel3" class="panel-body" style="display: none;">Morbi in sem quis dui placerat ornare. Pellentesque odio nisi, euismod in, pharetra ultricies in, diam. Sed arcu. Cras consequat.</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading accordion-caret">
<h4 class="panel-title"><a class="accordion-toggle" href="#collapseFour" onclick="openbox('panel4'); return false">Nam convallis pellentesque nisl<span id="open-icon">+</span></a></h4>
</div>
<div class="panel-collapse collapse">
<div id="panel4" class="panel-body" style="display: none;">Morbi in sem quis dui placerat ornare. Pellentesque odio nisi, euismod in, pharetra ultricies in, diam. Sed arcu. Cras consequat.</div>
</div>
</div>
</div>
</div>
I'm writing a JavaScript-script, which open one of this panel at time and change '+' sign to '-'.
Here is my JavaScript-code.
function openbox(id){
var element = document.getElementById(id);
display = element.style.display;
if(display=='none'){
element.style.display='block';
ver elem = document.getElementById('panel1');
document.getElementsById('open-icon').innerHTML = '-';
}
else{
document.getElementById(id).style.display='none';
document.getElementById('open-icon').innerHTML = '+';
}
}
When I clicked on the first panel, it's working correctly. But if I clicked on the other one, div opened, but '+' sign changed at first panel. Example:
And the last trouble: I want to open only one panel at time and auto-close other panels (and if I open 2 panels and close only one, '-' sign changed to '+' on the first panel). But I can't understand how to do it. Here the issue:
Upvotes: 2
Views: 70
Reputation: 1572
You need to use this
, like open(this, 'panel1')
find the children of click anchor and change the innerHTML
function openbox(e, id) {
var element = document.getElementById(id),
display = element.style.display;
var activePanel = document.querySelector('.active-panel'),
activeToggle = document.querySelector('.active-toggle');
if(activePanel) {
activePanel.style.display = 'none';
activePanel.classList.remove('active-panel');
activeToggle.classList.remove('active-toggle');
activeToggle.children[0].innerHTML = '+';
}
if(display == 'none') {
element.style.display = 'block';
element.classList.toggle('active-panel');
e.children[0].innerHTML = '-';
e.classList.toggle('active-toggle');
} else {
element.style.display = 'none';
element.classList.toggle('active-panel');
e.children[0].innerHTML = '+';
e.classList.toggle('active-toggle');
}
}
.accordion-toggle {
background: #000;
padding: 10px;
display: block;
color: #fff;
text-decoration: none;
position: relative;
}
.accordion-toggle span {
background: #1f91dc;
position: absolute;
top: 0;
right: 0;
padding: 10px 15px;
}
<div class="block">
<div class="block-title">
<h1>Open/close div tag's</h1>
<h2>Some junior's magic</h2>
</div>
<div class="panel-group" id="accordion">
<div class="panel panel-default">
<div class="panel-heading accordion-caret">
<h4 class="panel-title"><a class="accordion-toggle" href="#collapseOne" onclick="openbox(this, 'panel1'); return false">Donec quis dui at dolor tempor<span id="open-icon">+</span></a></h4>
</div>
<div class="panel-collapse collapse">
<div id="panel1" class="panel-body" style="display: none;">Morbi in sem quis dui placerat ornare. Pellentesque odio nisi, euismod in, pharetra ultricies in, diam. Sed arcu. Cras consequat.</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading accordion-caret">
<h4 class="panel-title"><a class="accordion-toggle" href="#collapseTwo" onclick="openbox(this, 'panel2'); return false">Vivamus molestie gravida turpis<span id="open-icon">+</span></a></h4>
</div>
<div class="panel-collapse collapse">
<div id="panel2" class="panel-body" style="display: none;">Morbi in sem quis dui placerat ornare. Pellentesque odio nisi, euismod in, pharetra ultricies in, diam. Sed arcu. Cras consequat.</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading accordion-caret">
<h4 class="panel-title"><a class="accordion-toggle" href="#collapseThree" onclick="openbox(this, 'panel3'); return false">Fusce lobortis lorem at ipsum semper<span id="open-icon">+</span></a></h4>
</div>
<div class="panel-collapse collapse">
<div id="panel3" class="panel-body" style="display: none;">Morbi in sem quis dui placerat ornare. Pellentesque odio nisi, euismod in, pharetra ultricies in, diam. Sed arcu. Cras consequat.</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading accordion-caret">
<h4 class="panel-title"><a class="accordion-toggle" href="#collapseFour" onclick="openbox(this, 'panel4'); return false">Nam convallis pellentesque nisl<span id="open-icon">+</span></a></h4>
</div>
<div class="panel-collapse collapse">
<div id="panel4" class="panel-body" style="display: none;">Morbi in sem quis dui placerat ornare. Pellentesque odio nisi, euismod in, pharetra ultricies in, diam. Sed arcu. Cras consequat.</div>
</div>
</div>
</div>
</div>
Upvotes: 2