Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 288
  • Last Modified:

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

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
TrystHughes
Asked:
TrystHughes
3 Solutions
 
bugadaCommented:
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
 
HonorGodCommented:
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
 
metta0_3Commented:
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
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
HonorGodCommented:
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
 
alien109Commented:
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
 
alien109Commented:
oops, HonorGod beat me to the punch.
0
 
TrystHughesAuthor Commented:
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
 
HonorGodCommented:
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

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now