DOM Lab - UI Tabs
by Shane Porter
HTML
<div class="tabbed">
<ul>
<li class="active" id="tab1"><a href="#tab1">Tab 1</a>
</li>
<li id="tab2"><a href="#tab2">Tab 2</a>
</li>
<li id="tab3"><a href="#tab3">Tab 3</a>
</li>
</ul>
<div id="divtab1">Tab 1</div>
<div id="divtab2">Tab 2</div>
<div id="divtab3">Tab 3</div>
</div>
CSS
.tabbed ul {
list-style:none;
margin:0;
padding:0;
}
.tabbed ul li {
float:left;
position:relative;
background-color:#fff;
margin-bottom:-1px;
}
.tabbed ul li a {
display:block;
padding:3px 5px;
border:1px solid #ccc;
border-bottom:0;
color:green;
text-decoration:none;
}
.tabbed ul li.active a {
border-bottom:1px solid #fff;
}
.tabbed > div {
border:1px solid #ccc;
clear:both;
padding:10px;
}
.tabbed > div {
display:none;
}
.tabbed > div:first-of-type {
display:block;
}
JavaScript
// Build some basic UI tabs
//
// Desired behavior:
//
// When user clicks a tab
// that tab becomes marked as "active"
// any other active tabs are no longer active
// the related div (by id) is displayed
// any other unrelated divs are hidden
//
// Hint:
// You'll use the "click" event, and delegation is best
var tab1 = document.getElementById("tab1");
var tab2 = document.getElementById("tab2");
var tab3 = document.getElementById("tab3");
var divtab1 = document.getElementById("divtab1");
var divtab2 = document.getElementById("divtab2");
var divtab3 = document.getElementById("divtab3");
tab1.onclick = function (e) {
tab1.className="active";
tab2.className="";
tab3.className="";
divtab1.style.display = 'block';
divtab2.style.display = 'none';
divtab3.style.display = 'none';
return false;
}
tab2.onclick = function (e) {
tab2.className="active";
tab1.className="";
tab3.className="";
divtab1.style.display = 'none';
divtab2.style.display = 'block';
divtab3.style.display = 'none';
return false;
}
tab3.onclick = function (e) {
tab3.className="active";
tab2.className="";
tab1.className="";
divtab1.style.display = 'none';
divtab2.style.display = 'none';
divtab3.style.display = 'block';
return false;
}