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
-~----------~----~----~----~------~----~------~--~---