Go Back  HTML Forums - Free Webmaster Forums and Help Forums > WEBSITE DEVELOPMENT > Client Side Scripting
User Name:
Password:
 

Reply
Thread Tools   Display Modes
  View First Unread
 
Old 11-04-2009, 02:39 AM
  #1
chewgp
Novice (Level 1)
 
Join Date: Nov 2009
Posts: 2
iTrader: (0)
chewgp is an unknown quantity at this point
Expand list showing/hiding table with tabs

Hi, I am currently stuck with this problem, and would appreciate if anyone can help me with it.

I need to create a table with tabs, and it will appear only when I click on an "Appear" hyperlink. Futile attempts have been tried for weeks, and I desperately need help in it. Thanks!

HTML code
HTML Code:
                            <div class="mailboxtabs" id="myvar">
                                <p>
                                    <ul id="countrytabs" class="shadetabs">
                                        <li><a class="selected" href="#" rel="country1">Personal Details</a></li>
                                        <li><a class="" href="#" rel="country2">Exchange Features</a></li>
                                    </ul>
                                    <div class="contentBox">
                                        <div style="display: block;" id="country1" class="tabcontent">
                                            <label>
                                                Company:
                                            </label>
                                            <input id="Text23" type="text" /><br />
                                            &nbsp;<br />
                                            <label>
                                                Department:</label>
                                            <input id="Text24" type="text" /><br />
                                            <br />
                                            <label>
                                                Job Title:</label>
                                            <input id="Text25" type="text" /><br />
                                            <br />
                                            <label>
                                                Office Telephone:</label>
                                            <input id="Text26" type="text" /><br />
                                            <br />
                                            <label>
                                                Mobile Telephone:</label>
                                            <input id="Text27" type="text" /><br />
                                            <br />
                                            <label>
                                                Fax Number:</label>
                                            <input id="Text28" type="text" /><br />
                                            <br />
                                            <label>
                                                Group(s) Section:</label>
                                            <select name="drop1" id="Select8" size="4" multiple="multiple">
                                                <option value="1"></option>
                                                <option value="2"></option>
                                                <option value="3"></option>
                                                <option value="0"></option>
                                            </select><br />
                                        </div>
                                        <div style="display: none;" id="country2" class="tabcontent">
                                            Tab content 2 here<br />
                                            Tab content 2 here<br />
                                        </div>
                                    </div>
                                </p>
                    </div>

                    <script type="text/javascript">

var countries=new ddtabcontent("countrytabs")
countries.setpersist(true)
countries.setselectedClassTarget("link") //"link" or "linkparent"
countries.init()

                    </script>
tabs' CSS code
Code:
.contentBox
{
	border: 1px solid gray;
	width: 450px;
	margin-bottom: 1em;
	padding: 10px;
}

.shadetabs
{
	padding: 3px 0;
	margin-top: 1px;
	margin-bottom: 0;
	font: bold 12px Verdana;
	list-style-type: none;
	text-align: left;
}

.shadetabs li
{
	display: inline;
	margin: 0;
}

.shadetabs li a
{
	text-decoration: none;
	position: relative;
	z-index: 1;
	padding: 3px 7px;
	margin-right: 3px;
	border: 1px solid #778;
	color: white;
	background: #343748;
}

.shadetabs li a:visited
{
	color: white;
}

.shadetabs li a:hover
{
	text-decoration: underline;
}

.shadetabs li a.selected
{
	/*selected main tab style */
	position: relative;
	top: 1px;
	background: #d7c8cd;
	border-bottom-color: white;
}

.shadetabs li a.selected:hover
{
	/*selected main tab style */
	text-decoration: none;
}

.tabcontent
{
	display: none;
}

@media print
{
	.tabcontent
	{
		display: block !important;
	}
}

.contentBox1
{
	border: 1px solid gray;
	width: 450px;
	margin-bottom: 1em;
	margin-left: 50px;
	padding: 10px;
}

.shadetabs1
{
	padding: 3px 0;
	margin-top: 1px;
	margin-bottom: 0;
	margin-left: 50px;	
	font: bold 12px Verdana;
	list-style-type: none;
	text-align: left;
}

.shadetabs1 li
{
	display: inline;
	margin: 0;
}

.shadetabs1 li a
{
	text-decoration: none;
	position: relative;
	z-index: 1;
	padding: 3px 7px;
	margin-right: 3px;
	border: 1px solid #778;
	color: white;
	background: #343748;
}

.shadetabs1 li a:visited
{
	color: white;
}

.shadetabs1 li a:hover
{
	text-decoration: underline;
}

.shadetabs1 li a.selected
{
	/*selected main tab style */
	position: relative;
	top: 1px;
	background: #d7c8cd;
	border-bottom-color: white;
}

.shadetabs1 li a.selected:hover
{
	/*selected main tab style */
	text-decoration: none;
}
*****NOTE: Javascript posted on next thread******

Last edited by Pegasus : 11-04-2009 at 12:36 PM. Reason: bbcode added
chewgp is offline   Add to del.icio.us Add to del.icio.us    Can you digg it?Can you digg it? Reply With Quote
Old 11-04-2009, 02:40 AM
  #2
chewgp
Novice (Level 1)
 
Join Date: Nov 2009
Posts: 2
iTrader: (0)
chewgp is an unknown quantity at this point
Expand list showing/hiding table with tabs

My tabs' javascript code
PHP Code:
function ddtabcontent(tabinterfaceid){
    
this.tabinterfaceid=tabinterfaceid //ID of Tab Menu main container
    
this.tabs=document.getElementById(tabinterfaceid).getElementsByTagName("a"//Get all tab links within container
    
this.enabletabpersistence=true
    this
.hottabspositions=[] //Array to store position of tabs that have a "rel" attr defined, relative to all tab links, within container
    
this.currentTabIndex=//Index of currently selected hot tab (tab with sub content) within hottabspositions[] array
    
this.subcontentids=[] //Array to store ids of the sub contents ("rel" attr values)
    
this.revcontentids=[] //Array to store ids of arbitrary contents to expand/contact as well ("rev" attr values)
    
this.selectedClassTarget="link" //keyword to indicate which target element to assign "selected" CSS class ("linkparent" or "link")
}

ddtabcontent.getCookie=function(Name){ 
    var 
re=new RegExp(Name+"=[^;]+""i"); //construct RE to search for target name/value pair
    
if (document.cookie.match(re)) //if cookie found
        
return document.cookie.match(re)[0].split("=")[1//return its value
    
return ""
}

ddtabcontent.setCookie=function(namevalue){
    
document.cookie name+"="+value+";path=/" //cookie value is domain wide (path=/)
}

ddtabcontent.prototype={

    
expandit:function(tabid_or_position){ //PUBLIC function to select a tab either by its ID or position(int) within its peers
        
this.cancelautorun() //stop auto cycling of tabs (if running)
        
var tabref=""
        
try{
            if (
typeof tabid_or_position=="string" && document.getElementById(tabid_or_position).getAttribute("rel")) //if specified tab contains "rel" attr
                
tabref=document.getElementById(tabid_or_position)
            else if (
parseInt(tabid_or_position)!=NaN && this.tabs[tabid_or_position].getAttribute("rel")) //if specified tab contains "rel" attr
                
tabref=this.tabs[tabid_or_position]
        }
        catch(
err){alert("Invalid Tab ID or position entered!")}
        if (
tabref!=""//if a valid tab is found based on function parameter
            
this.expandtab(tabref//expand this tab
    
},

    
cycleit:function(dirautorun){ //PUBLIC function to move foward or backwards through each hot tab (tabinstance.cycleit('foward/back') )
        
if (dir=="next"){
            var 
currentTabIndex=(this.currentTabIndex<this.hottabspositions.length-1)? this.currentTabIndex+0
        
}
        else if (
dir=="prev"){
            var 
currentTabIndex=(this.currentTabIndex>0)? this.currentTabIndex-this.hottabspositions.length-1
        
}
        if (
typeof autorun=="undefined"//if cycleit() is being called by user, versus autorun() function
            
this.cancelautorun() //stop auto cycling of tabs (if running)
        
this.expandtab(this.tabs[this.hottabspositions[currentTabIndex]])
    },

    
setpersist:function(bool){ //PUBLIC function to toggle persistence feature
            
this.enabletabpersistence=bool
    
},

    
setselectedClassTarget:function(objstr){ //PUBLIC function to set which target element to assign "selected" CSS class ("linkparent" or "link")
        
this.selectedClassTarget=objstr || "link"
    
},

    
getselectedClassTarget:function(tabref){ //Returns target element to assign "selected" CSS class to
        
return (this.selectedClassTarget==("linkparent".toLowerCase()))? tabref.parentNode tabref
    
},

    
urlparamselect:function(tabinterfaceid){
        var 
result=window.location.search.match(new RegExp(tabinterfaceid+"=(\\d+)""i")) //check for "?tabinterfaceid=2" in URL
        
return (result==null)? null parseInt(RegExp.$1//returns null or index, where index (int) is the selected tab's index
    
},

    
expandtab:function(tabref){
        var 
subcontentid=tabref.getAttribute("rel"//Get id of subcontent to expand
        //Get "rev" attr as a string of IDs in the format ",john,george,trey,etc," to easily search through
        
var associatedrevids=(tabref.getAttribute("rev"))? ","+tabref.getAttribute("rev").replace(/s+/, "")+"," ""
        
this.expandsubcontent(subcontentid)
        
this.expandrevcontent(associatedrevids)
        for (var 
i=0i<this.tabs.lengthi++){ //Loop through all tabs, and assign only the selected tab the CSS class "selected"
            
this.getselectedClassTarget(this.tabs[i]).className=(this.tabs[i].getAttribute("rel")==subcontentid)? "selected" ""
        
}
        if (
this.enabletabpersistence//if persistence enabled, save selected tab position(int) relative to its peers
            
ddtabcontent.setCookie(this.tabinterfaceidtabref.tabposition)
        
this.setcurrenttabindex(tabref.tabposition//remember position of selected tab within hottabspositions[] array
    
},

    
expandsubcontent:function(subcontentid){
        for (var 
i=0i<this.subcontentids.lengthi++){
            var 
subcontent=document.getElementById(this.subcontentids[i]) //cache current subcontent obj (in for loop)
            
subcontent.style.display=(subcontent.id==subcontentid)? "block" "none" //"show" or hide sub content based on matching id attr value
        
}
    },

    
expandrevcontent:function(associatedrevids){
        var 
allrevids=this.revcontentids
        
for (var i=0i<allrevids.lengthi++){ //Loop through rev attributes for all tabs in this tab interface
            //if any values stored within associatedrevids matches one within allrevids, expand that DIV, otherwise, contract it
            
document.getElementById(allrevids[i]).style.display=(associatedrevids.indexOf(","+allrevids[i]+",")!=-1)? "block" "none"
        
}
    },

    
setcurrenttabindex:function(tabposition){ //store current position of tab (within hottabspositions[] array)
        
for (var i=0i<this.hottabspositions.lengthi++){
            if (
tabposition==this.hottabspositions[i]){
                
this.currentTabIndex=i
                
break
            }
        }
    },

    
autorun:function(){ //function to auto cycle through and select tabs based on a set interval
        
this.cycleit('next'true)
    },

    
cancelautorun:function(){
        if (
typeof this.autoruntimer!="undefined")
            
clearInterval(this.autoruntimer)
    },

    
init:function(automodeperiod){
        var 
persistedtab=ddtabcontent.getCookie(this.tabinterfaceid//get position of persisted tab (applicable if persistence is enabled)
        
var selectedtab=-//Currently selected tab index (-1 meaning none)
        
var selectedtabfromurl=this.urlparamselect(this.tabinterfaceid//returns null or index from: tabcontent.htm?tabinterfaceid=index
        
this.automodeperiod=automodeperiod || 0
        
for (var i=0i<this.tabs.lengthi++){
            
this.tabs[i].tabposition=//remember position of tab relative to its peers
            
if (this.tabs[i].getAttribute("rel")){
                var 
tabinstance=this
                this
.hottabspositions[this.hottabspositions.length]=//store position of "hot" tab ("rel" attr defined) relative to its peers
                
this.subcontentids[this.subcontentids.length]=this.tabs[i].getAttribute("rel"//store id of sub content ("rel" attr value)
                
this.tabs[i].onclick=function(){
                    
tabinstance.expandtab(this)
                    
tabinstance.cancelautorun() //stop auto cycling of tabs (if running)
                    
return false
                
}
                if (
this.tabs[i].getAttribute("rev")){ //if "rev" attr defined, store each value within "rev" as an array element
                    
this.revcontentids=this.revcontentids.concat(this.tabs[i].getAttribute("rev").split(/s*,s*/))
                }
                if (
selectedtabfromurl==|| this.enabletabpersistence && selectedtab==-&& parseInt(persistedtab)==|| !this.enabletabpersistence && selectedtab==-&& this.getselectedClassTarget(this.tabs[i]).className=="selected"){
                    
selectedtab=//Selected tab index, if found
                
}
            }
        } 
//END for loop
        
if (selectedtab!=-1//if a valid default selected tab index is found
            
this.expandtab(this.tabs[selectedtab]) //expand selected tab (either from URL parameter, persistent feature, or class="selected" class)
        
else //if no valid default selected index found
            
this.expandtab(this.tabs[this.hottabspositions[0]]) //Just select first tab that contains a "rel" attr
        
if (parseInt(this.automodeperiod)>500 && this.hottabspositions.length>1){
            
this.autoruntimer=setInterval(function(){tabinstance.autorun()}, this.automodeperiod)
        }
    } 
//END int() function

//END Prototype assignment 

Last edited by Pegasus : 11-04-2009 at 12:37 PM. Reason: bbcode added
chewgp is offline   Add to del.icio.us Add to del.icio.us    Can you digg it?Can you digg it? Reply With Quote
Old 11-04-2009, 12:28 PM
  #3
¥åßßå
Blonde Bimbo
 
¥åßßå's Avatar
 
Join Date: Jul 2004
Posts: 2,244
iTrader: (0)
¥åßßå is a name known to all¥åßßå is a name known to all¥åßßå is a name known to all¥åßßå is a name known to all¥åßßå is a name known to all¥åßßå is a name known to all
Off Topic:
It makes your code easier to read if you wrap it in [h tml]your code here[/html] or [co de]your code here[/code] tags

A link to a live example of your problem is invaluable


¥
__________________
I may have opened the door, but you entered of your own free will

¥åßßå is offline   Add to del.icio.us Add to del.icio.us    Can you digg it?Can you digg it? Reply With Quote

Reply
KEEP TABS
SPONSORS
 
Boxedart
 
 


 
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
  
 
 
 



 
  POSTING RULES
 
 
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Thread Tools
Display Modes

Forum Jump

 

All times are GMT -5. The time now is 03:58 AM.

   

Mascot team created by Drawshop.com

Powered by vBulletin® Version 3.6.7
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.

Server Monitoring by ENIACmonitor 0.01
HTMLforums.com © Big Resources, Inc. Web Design by BoxedArt.com
vRewrite 1.5 beta SEOed URLs completed by Tech Help Forum and Chalo Na.