Hi,

The Prototype equivalent of `getElementById` is `$`, and then from
that element the method for getting the elements matching a CSS
selector is `select`. Prototype has a `setStyle` wrapper around style
stuff that smooths out some rough spots for you, and a `hide` function
that is the equivalent of `display: none`. So a rough translation of
your code might be:

var tbl, rows, cols, rowidx;
tbl = $('ctl00_m_g_0ab7c148_0e6c_49e4_bc03_fd1064ca4b41_ctl 00_Grid');
if (tbl) {
    rows = tbl.select('tr');

    cols = rows[0].select('th');
    cols[0].setStyle({"width": "300px"});
    cols[1].hide();
    cols[2].hide();

    for (rowidx = 1; rowidx < rows.length; ++rowidx) {
        cols = rows[rowidx].select('td');
        cols[0].setStyle({"width": "300px"});
        cols[1].hide();
        cols[2].hide();
    }
}

Refs:
http://api.prototypejs.org/dom/dollar/
http://api.prototypejs.org/dom/Element/select/
http://api.prototypejs.org/dom/Element/setStyle/
http://api.prototypejs.org/dom/Element/hide/

As you can see, that doesn't change all that much, though it's
shorter. (If we were selecting elements by a more complex CSS
expression, Prototype would help a lot -- but just searching for
subordinate elements by their tagname, not so much.)

Side note: Your table ID seems to have a space in it (just before the
"00_Grid" part). Although IDs can have spaces, you can't use spaces in
an ID you're going to use with a CSS selector, and so for that reason
I tend to avoid them -- you can't style them (directly) and you can't
use advanced JavaScript on them or their contents. I can't be 100%
sure that the code above will work with an ID that can't be used in a
CSS selector. Strongly recommend sticking to the CSS ID rules when
selecting HTML element IDs for elements you're later going to
manipulate via a JavaScript library.

HTH,
--
T.J. Crowder
Independent Software Engineer
tj / crowder software / com
www / crowder software / com

On Dec 2, 8:16 pm, KenB <[email protected]> wrote:
> I am new to prototype and need to learn how to traverse an html table
> and hide some columns. The only id I have is table id or the class it
> is associated with. Can anyone give me an example?
>
> Here is what I am trying to accomplish.
>
>  var tbl =
> document.getElementById('ctl00_m_g_0ab7c148_0e6c_49e4_bc03_fd1064ca4b41_ctl 
> 00_Grid');
>
>           if (tbl != null){
>
>            var rows = tbl.getElementsByTagName('tr');
>
>            var cols = rows[0].getElementsByTagName('th');
>            cols[0].style.width = '300px';
>            cols[1].style.display = 'none';
>            cols[2].style.display = 'none';
>
>            //Now loop through the data rows and hide specific cells
>            for (var row = 1; row < rows.length; row++) {
>                var cels = rows[row].getElementsByTagName('td');
>                //alert(cels[1].valueOf);
>                cels[0].style.width = '300px';
>                cels[1].style.display = 'none';
>                cels[2].style.display = 'none';
>            }
>
>       }
>
> Thanks!
>
> Ken

-- 
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.

Reply via email to