0

I have a jsp page with 4 tabs. Suppose tab1,tab2,tab3,tab4. Each tab has their own buttons,button1 for tab1 and similarly button2 for tab2,button3 for tab3 and button4 for tab4. When I click tab1,it should show me the content of only tab1 and other buttons of remaining tabs should not be displayed.My issue is when I click tab1 it is showing me the buttons of tab1 ie button1 which is correct but when I click the button1 to get the required output, the webpage is displaying the buttons of the remaining tabs ie button2,button3,button4 along with the content of the tabl which is incorrect . Below is the small code snippet am using.

<script type="text/javascript">
function tab(tab) {
    document.getElementById("start").style.display = "none";
    document.getElementById("status").style.display = "none";
    document.getElementById("log").style.display = "none";
    document.getElementById("checkin/checkout").style.display = "none";
    document.getElementById("version").style.display = "none";
    document.getElementById("li_start").setAttribute("class", "");
    document.getElementById("li_status").setAttribute("class", "");
    document.getElementById("li_log").setAttribute("class", "");
    document.getElementById("li_checkin/checkout").setAttribute("class", "");
    document.getElementById("li_version").setAttribute("class", "");
    document.getElementById(tab).style.display = "block";
    document.getElementById("li_"+tab).setAttribute("class", "active");
    }
    </script>

    <div id="tabs" align="center">
    <ul>
        <li id="li_start" onclick="tab  
('start')"><a>Start/Stop/Reread</a></li>
        <li id="li_status" onclick="tab('status')"><a>Server 
   Status</a></li>
        <li id="li_log" onclick="tab('log')"><a>View Log</a></li>
        <li id="li_version" onclick="tab('version')"><a>Version</a></li>
        <li id="li_checkin/checkout" onclick="tab
('checkin/checkout')"><a>Checkin/Checkout Feature</a></li>
    </ul>

    <div id="Content_Area"></div>
</div>

<div id="log" onclick="document.getElementById('log').style.display = 'block';">

<table align="center"><tr><td><h2>LogFile</h2></td></tr></table>

<table width="500px" align="center" style="border:1px solid #000000;background-  
color:#efefef;">

<tr><td colspan=2></td></tr>
<tr><td colspan=2>&nbsp;</td></tr>
<tr>
    <td><b>LogFile</b></td>

    <td>
                            <FORM 
action="logfile" METHOD="POST">
                                <input 
type=submit name=showLog id=txtSubmit value="ViewLog" />

                            </FORM>

                        <div id="result">
                            <pre>
    ${requestScope.logOutput}
</pre>
                        </div></td>

</tr>


<tr><td colspan=2>&nbsp;</td></tr>

</table>

code with jquery:

    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<title>JavaScript tabs example</title>

<style type="text/css">
  body { font-size: 80%; font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif; }
  ul#tabs { list-style-type: none; margin: 30px 0 0 0; padding: 0 0 0.3em 0; }
  ul#tabs li { display: inline; }
  ul#tabs li a { color: #42454a; background-color: #dedbde; border: 1px solid     
#c9c3ba;     border-bottom: none; padding: 0.3em; text-decoration: none; }
  ul#tabs li a:hover { background-color: #f1f0ee; }
  ul#tabs li a.selected { color: #000; background-color: #f1f0ee; font-weight: bold;  
padding: 0.7em 0.3em 0.38em 0.3em; }
  div.tabContent { border: 1px solid #c9c3ba; padding: 0.5em; background-color: 
#f1f0ee; }
  div.tabContent.hide { display: none; }
</style>

<script type="text/javascript">
//<![CDATA[

var tabLinks = new Array();
var contentDivs = new Array();

function init() {

  // Grab the tab links and content divs from the page
  var tabListItems = document.getElementById('tabs').childNodes;
  for ( var i = 0; i < tabListItems.length; i++ ) {
    if ( tabListItems[i].nodeName == "LI" ) {
      var tabLink = getFirstChildWithTagName( tabListItems[i], 'A' );
      var id = getHash( tabLink.getAttribute('href') );
      tabLinks[id] = tabLink;
      contentDivs[id] = document.getElementById( id );
    }
  }

  // Assign onclick events to the tab links, and
  // highlight the first tab
  var i = 0;

  for ( var id in tabLinks ) {
    tabLinks[id].onclick = showTab;
    tabLinks[id].onfocus = function() { this.blur() };
   // if ( i == 0 ) tabLinks[id].className = 'selected';
    i++;
  }

  // Hide all content divs except the first
  var i = 0;

  for ( var id in contentDivs ) {
    if ( i != 0 ) contentDivs[id].className = 'tabContent hide';
    i++;
  }
}

function showTab() {
  var selectedId = getHash( this.getAttribute('href') );

  // Highlight the selected tab, and dim all others.
  // Also show the selected content div, and hide all others.
  for ( var id in contentDivs ) {
    if ( id == selectedId ) {
      tabLinks[id].className = 'selected';
      contentDivs[id].className = 'tabContent';
    } else {
      tabLinks[id].className = '';
      contentDivs[id].className = 'tabContent hide';
    }
  }

  // Stop the browser following the link
  return false;
}

function getFirstChildWithTagName( element, tagName ) {
  for ( var i = 0; i < element.childNodes.length; i++ ) {
    if ( element.childNodes[i].nodeName == tagName ) return element.childNodes[i];
  }
}

function getHash( url ) {
  var hashPos = url.lastIndexOf ( '#' );
  return url.substring( hashPos + 1 );
}

//]]>
</script>
  </head>
  <body onload="init()">
<h1>JavaScript tabs example</h1>

<ul id="tabs">
  <li><a href="#start">Start/Stop/ReRead</a></li>
  <li><a href="#status">ServerStatus</a></li>
  <li><a href="#logs">ViewLog</a></li>
  <li><a href="#version">Version</a></li>

</ul>

<div class="tabContent" id="start">
  <h2>ServerStart</h2>
  <div>
    <p>JavaScript tabs partition your Web page content into tabbed sections.      p>
    <p>The code is written in such a way that the page degrades gracefully in bro.</p>
  </div>
</div>

<div class="tabContent" id="status">
  <h2>Status</h2>
  <div>
    <p>JavaScript tabs are great if your Web page contains a large amount of cont.</p>
    <p>They're also good for things like multi-step Web forms.</p>
  </div>
</div>

<div class="tabContent" id="logs">
  <h2>Logfile</h2>
  <div>
    <p>Click a tab to view the tab's content. Using tabs couldn't be easier!</p>
  </div>
</div>

<div class="tabContent" id="version">
  <h2>Version</h2>
  <div>
    <form action="version" method="post">
                                <p><input type=submit name=findversion id=txtSubmit
                                    value=FindVersion />

                        <div id="result">
                            <pre>
    ${requestScope.verOutput}
</pre>
                        </div>
  </div>
</div>
user2266817
  • 147
  • 2
  • 7
  • 17
  • This is really a purely javascript question. The answer will be the same no matter what serverside language you use, or even if you use static html. – developerwjk Sep 17 '13 at 19:51
  • @developerwjk:Thanks for the quick reply. So there is no other way to hide the tabs? – user2266817 Sep 17 '13 at 19:57
  • I would suggest http://stackoverflow.com/questions/16456895/how-to-hide-other-tabss-content-and-display-only-the-selected-tabs-content?rq=1 or this article http://www.elated.com/articles/javascript-tabs/ What you have so far doesn't look like "tabs" to me but just like an unordered list. – developerwjk Sep 17 '13 at 20:06
  • @developerwjk: But mine is IE8 and the above article does not work for IE8 – user2266817 Sep 17 '13 at 20:33
  • The second article doesn't use getElementsByClassName. And it works just fine in IE8. – developerwjk Sep 17 '13 at 21:21
  • @developerwjk:Thanks for the wonderful article.Everything is good but still the same problem.Example am clicking button3 in tab3 and the webpage automatically takes me to tab1. To see wat result is there in tab3 i need to click tab3 again and the result is there. have edited my code above. – user2266817 Sep 18 '13 at 03:55

0 Answers0