And I think the root of my problem is that code like this works: $('col-2').insert(document.getElementById('w_18'));
But this doesn't work: var col = "col-2"; $(col).insert(document.getElementById('w_18')); How would I get around this? I want to reference elements by strings that are built programmatically, not hard coded. 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 rubyonrails-spinoffs@googlegroups.com 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 -~----------~----~----~----~------~----~------~--~---