var tab = { nav: null, // holds all tabs. txt: null, // holds all text containers. init: function () { // Get all tabs + contents. var em_tab_nav = document.getElementById( 'em-tab-nav' ); if ( null === em_tab_nav ) { return; } tab.nav = em_tab_nav.getElementsByClassName( 'em-tabnav' ); tab.txt = document.getElementById( 'em-tab-contents' ).getElementsByClassName( 'em-tabtxt' ); // Error checking. if ( 0 === tab.nav.length || 0 === tab.txt.length || tab.nav.length !== tab.txt.length ) { console.log( 'ERROR STARTING TABS' ); } else { // Attach onclick events to navigation tabs. var nav_items = tab.nav.length; for ( var i = 0; i < nav_items; i ++ ) { tab.nav[i].dataset.pos = i; tab.nav[i].addEventListener( 'click', tab.switch ); } // Default - show first tab. tab.nav[0].classList.add( 'active' ); tab.txt[0].classList.add( 'active' ); } }, switch : function() { // Hide all tabs & text. var nav_length = tab.nav.length; for (var i = 0; i < nav_length; i++) { tab.nav[i].classList.remove( 'active' ); tab.nav[i].classList.toggle( 'tab-navs-open' ); } var txt_length = tab.txt.length; for (var x = 0; x < txt_length; x++) { tab.txt[x].classList.remove( 'active' ); tab.txt[x].classList.toggle( 'tab-text-hide' ); } // Set current tab. tab.nav[this.dataset.pos].classList.add( 'active' ); tab.txt[this.dataset.pos].classList.add( 'active' ); } }; window.addEventListener( 'load', tab.init );