Wait wait, crisis averted....

Martin,
I implemented your suggestion and it's now working! I modeled that
loop on the following examples from w3schools.com. I wonder why it
didn't work?
http://www.w3schools.com/js/js_obj_array.asp
http://www.w3schools.com/js/tryit.asp?filename=tryjs_array_for_in

Thank you soooo much for your help! Here's an example of the change:

                        //step through the first column
                        for( x=x; x<col0.length; ++x ) {
                                w_id = 'w_' + col0[x];

                                //if the current item is not in col-0,
move it there
                                if( ! ($
(w_id).descendantOf('col-0')) ) {
                                        $
('col-0').insert(document.getElementById(w_id));
                                }
                        }

Have a great day!

Tim


On May 8, 7:54 am, Timebomb <[EMAIL PROTECTED]> wrote:
> Looking over it, I already see that I forgot to update lines that
> read: "w_id = "w_" + col0[x];" in each column loop. But that's not
> where I'm getting the javascript error.
>
> Tim
>
> On May 8, 7:49 am, Timebomb <[EMAIL PROTECTED]> wrote:
>
> > Thanks for the reply Martin! col0 is an array of integers that
> > retrieved from a browser cookie. The page I am working on is similar
> > to the iGoogle page where you have movable widgets arranged in 3
> > columns. Widgets can be moved up and down in their column and even
> > between columns. I'm primarily using the Scriptaculous Sortables class
> > to make columns sortable with each other. Column order is saved and
> > restored via the Sequence and setSequence function calls and cookies.
> > That part was straight forward. However, I need a method to move the
> > widgets to the correct column div before calling setSequence. Right
> > now the code is repetitive, but it's just a first draft. :) Here is
> > the full function:
>
> > Columns are divs with id's of "col-0", "col-1", and "col-2"
> > Widget are divs with id's like "w_2" and "w_20" and are contained in
> > columns
> > There is one cookie per column that contains a list of integers
> > separated by commas, the integers correspond to the order the widgets
> > should appear in the column.
>
> >         function orderWidgetsByColumn() {
> > //these are string containing integers separated by commas
> > //example: 2,18,3,19,3
> >                 var widgetListStr0 = getCookie('col-0');
> >                 var widgetListStr1 = getCookie('col-1');
> >                 var widgetListStr2 = getCookie('col-2');
>
> > //if all cookies are set, move all widgets to the correct column
> >                 if( widgetListStr0.length > 0 &&
> >                         widgetListStr1.length > 0 &&
> >                         widgetListStr2.length > 0 ) {
>
> > //convert the comma delimited strings to arrays
> >                         var col0 = widgetListStr0.split(',');
> >                         var col1 = widgetListStr1.split(',');
> >                         var col2 = widgetListStr2.split(',');
>
> >                         var x;
> >                         var w_id = "";
>
> >                         //step through the first column
> >                         for( x in col0 ) {
> >                                 w_id = 'w_' + col0[x];
>
> >                                 //if the current item is not in col0, move 
> > it there
> >                                 if( ! ($(w_id).descendantOf('col-0')) ) {
> >                                         
> > $('col-0').insert(document.getElementById(w_id));
> >                                 }
>
> >                         }
>
> >                         //step through the second column
> >                         for( x in col1 ) {
> >                                 w_id = "w_" + col0[x];
>
> >                                 //if the current item is not in col0, move 
> > it there
> >                                 if( ! ($(w_id).descendantOf('col-1')) ) {
> >                                         
> > $('col-1').insert(document.getElementById(w_id));
> >                                 }
> >                         }
>
> >                         //step through the third column
> >                         for( x in col2 ) {
> >                                 w_id = "w_" + col0[x];
>
> >                                 //if the current item is not in col2, move 
> > it there
> >                                 if( ! ($(w_id).descendantOf('col-2')) ) {
> >                                         
> > $('col-2').insert(document.getElementById(w_id));
> >                                 }
> >                         }
>
> >                 }
>
> >                 return;
>
> >         }
>
> > On May 8, 5:20 am, "Martin Ström" <[EMAIL PROTECTED]> wrote:
>
> > > What is the contents of your "col0" variable?
> > > If it's an array you should not use the "for (x in ...)" loop but a
> > > traditional for (x = 0; x < y; x++) loop or Prototype's Array#each
>
> > > If you post how you get the col0's contents setup I'm sure we can help 
> > > you.
>
> > > 2008/5/8 Timebomb <[EMAIL PROTECTED]>:
>
> > > >  I am trying to write some code using javascript and the prototype
> > > >  library that makes sure certain divs are contained in a column div, if
> > > >  they are not they get moved there. I'm getting the error "$(w_id) has
> > > >  no properties" when I run it. Is it possible to programmatically build
> > > >  a string containing a div id then use it like I need to? I'm new to
> > > >  prototype. Thanks in advance.
>
> > > >  Here is my code snippet:
>
> > > >  var x;
> > > >  var w_id = "";
>
> > > >  //step through the first column
> > > >  for( x in col0 ) {
> > > >         w_id = 'w_' + col0[x];
>
> > > >         //if the current item is not in col0, move it there
> > > >         if( ! ($(w_id).descendantOf('col-0')) ) {
> > > >                 $('col-0').insert(document.getElementById(w_id));
> > > >         }
>
> > > >  }
>
> > > --
> > > burnfield.com/martin
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Spinoffs" 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/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to