Solved

How can I show/hide rows in a HTML table, but 1st row always show

Posted on 2009-05-05
8
279 Views
Last Modified: 2012-06-27
Hi all,

I am generated some HTML / Javascript through the use of some XSLT, and what I aim to do is generate a table with many rows where we always have the 1st row showing (which has a +/- image there for users to click so that they can expand/collapse the rest of the rows in that table). I am having trouble with the Javascript on assigning the relevant class to the rows so that they get hidden or shown.

So far my XSL is generating the HTML table that is shown.

I know I am violating HTML here by having many tags with the same ID, but I am just looking for ways to get this to work.

Is anyone able to help me out a bit here and also suggest what I place in my 'ShowHide()' javascript method?

Thanks in advance
<table class="InfoBlock" cellspacing="0" cellpadding="0">
      <col class="report_column_headings">
      <col class="report_column_headings">
      <tbody>
        <th>Date</th>
        <th>Capital</th>
        <tr class="search_results_row_colour">
          <td class="collection_list"><a onClick="ShowHide('ID0EKFAC')"><img src="images/panel_Plus.gif" alt="expand/collapse section" class="expandable" onclick="changepic()" border="0"></a>07-03-2005</td>
          <td class="collection_list">3,000,000</td>
        </tr>
        <tr class="collapsed" id="ID0EOFAC">
          <td class="collection_list">27-07-2002</td>
          <td class="collection_list">15,000,000</td>
        </tr>
        <tr class="collapsed" id="ID0ESFAC">
          <td class="collection_list">23-10-2000</td>
          <td class="collection_list">100,000</td>
        </tr>
      </tbody>
    </table>

Open in new window

0
Comment
Question by:TrystHughes
8 Comments
 
LVL 10

Accepted Solution

by:
bugada earned 50 total points
ID: 24303901
If your show/hide is supposed to hide/show a single row you can use some sort of javascript like the following:
function ShowHide(id) {
   var elem = document.getElementById(id);
   if (elem) {
      elem.style.display = elem.style.display == "none" ? "block" : "none";
   }
   return false;
}

Open in new window

0
 
LVL 41

Assisted Solution

by:HonorGod
HonorGod earned 50 total points
ID: 24303951
You could put the row to not be displayed in the <thead> section, then the code can hide all of the rows in the <tbody>
0
 

Expert Comment

by:metta0_3
ID: 24303970
Well CSS for hiding would be Create an inline style to have initially hidden control using below CSS

Style = "display:none"

There is also a javascript show method.

function ShowItem() {
    document.getElementById('controlID').show();
}

function hideItem() {
document.getElementById('controlID').style.visibility = 'hidden';
}
0
Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

 
LVL 41

Expert Comment

by:HonorGod
ID: 24303977
Put the ShowHide() function in the <head> section of the document between beginning and ending script tags, like this:
<script type='text/javascript'>
  function ShowHide() {
    ...
  }
</script>

Open in new window

0
 
LVL 12

Assisted Solution

by:alien109
alien109 earned 25 total points
ID: 24303984
if you mark up your table as follows:

<table>
<thead>
    <tr>
        <td>this is the first row</td>
    </tr>
</thead>
<tbody id="bob">
    <tr>
        <td>this is all the other stuff that hides/shows</td>
    </tr>
</tbody>
</table>

You can target just the body (with the appropriate id...) of the table to hide/show and leave the head as visible.
0
 
LVL 12

Expert Comment

by:alien109
ID: 24303995
oops, HonorGod beat me to the punch.
0
 

Author Comment

by:TrystHughes
ID: 24306140
Hi all, and thanks for teh replies :)

It looks like i am going down the <thead><tbody> route, but I am having trouble with my XSL output side of this at the moment, but once I crack this I will come back onto Javascript side of it here.

...brb...
0
 
LVL 41

Expert Comment

by:HonorGod
ID: 24309799
Thanks for the assist, and the points.

I'm sorry that you felt the answer(s) only warranted a B

Good luck & have a great day
0

Featured Post

Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
How do specify keydowns in JavaScript 3 44
How would I do a website like this? 5 54
how can i apply an assert arrayEqual function ? 2 24
Index on a Table 6 8
Use these top 10 tips to master the art of email signature design. Create an email signature design that will easily wow recipients, promote your brand and highlight your professionalism.
Nothing in an HTTP request can be trusted, including HTTP headers and form data.  A form token is a tool that can be used to guard against request forgeries (CSRF).  This article shows an improved approach to form tokens, making it more difficult to…
In this tutorial viewers will learn how to embed videos in a webpage using HTML5. Ensure your DOCTYPE declaration is set to HTML5: "<!DOCTYPE html>": Use the <video> tag to insert a video. Define the src as the URL of your video; this is similar to …
The viewer will learn the benefit of using external CSS files and the relationship between class and ID selectors. Create your external css file by saving it as style.css then set up your style tags: (CODE) Reference the nav tag and set your prop…

786 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question