On Apr 27, 12:25 am, -Lost <maventheextrawo...@techie.com> wrote:
> SM wrote:
> > On Apr 27, 12:02 am, Cah Sableng <cahsabl...@gmail.com> wrote:
> >> On Apr 27, 10:28 am, SM <servandomont...@gmail.com> wrote:
>
> >>> On Apr 26, 10:45 pm, Peter Michaux <petermich...@gmail.com> wrote:
> >>>> On Apr 26, 6:24 pm, SM <servandomont...@gmail.com> wrote:
> >>>>> Hello
> >>>>> I'm trying to create a multi dimensional array in JavaScript, but
> >>>>> after some reading i still can't figure out how to apply it to my
> >>>>> model.
> >>>>> Here it is:
> >>>>> I have a list A and for each item in the list A i want to associate an
> >>>>> undetermined number of items. The complication for me is the fact that
> >>>>> the items to associate in list A are undetermined.
> >>>>> ie
> >>>>> LIST A
> >>>>> ----------------
> >>>>> News
> >>>>> Entertainment
> >>>>> Politics
> >>>>> Items to associate
> >>>>> ---------------------
> >>>>> News ---> Internacional, Asia, Europe,
> >>>>> Entertainment ---> Showbizz, Events
> >>>>> Politics ---> Local
> >>>>> i guess i can transalate it like this:
> >>>>> listA[0][0] = (News, Internacional);
> >>>>> listA[0][1] = (News, Asia) ;
> >>>>> listA[0][2] = (News, Europe);
> >>>>> listA[1][0] = (Entertainment, Showbizz);
> >>>>> listA[1][1] = (Entertainment, Events);
> >>>>> listA[2][1] = (Politics, Local);
> >>>> You could use an object with array properties. With an object literal
> >>>> you could just print the data structure into the HTML page (assuming
> >>>> we are talking about the web.)
> >>>> var listA = {
> >>>> news: ['internacional','asia','europe'],
> >>>> entertainment: ['showbizz', 'events'],
> >>>> politics: ['local']
> >>>> };
> >>>> You could dynamically add another category
> >>>> listA.news.push('foo');
> >>>> --------
> >>>> You could use a function to build up the data structure
> >>>> function add(list, cat1, cat2) {
> >>>> if (!list[cat1]) {
> >>>> list[cat1] = [];
> >>>> }
> >>>> list[cat1].push(cat2);
> >>>> }
> >>>> var listA = {};
> >>>> add(listA, "News", "Internacional");
> >>>> add(listA, "News", "Asia") ;
> >>>> add(listA, "News", "Europe");
> >>>> add(listA, "Entertainment", "Showbizz");
> >>>> add(listA, "Entertainment", "Events");
> >>>> add(listA, "Politics", "Local");
> >>>>> I then would like to iterate through the array using a FOR statment
> >>>>> for(i=0; .... ; i++)
> >>>>> {
> >>>>> for(j=0; ...; j++)
> >>>>> {
> >>>>> ...
> >>>>> }
> >>>>> }
> >>>> for (var p in listA) { // loop through an object
> >>>> for (var i =0; i< listA[p]; i++) { // loop through an array
> >>>> alert(listA[p] + ": " + listA[p][i]);
> >>>> }
> >>>> }
> >>>>> How do i create this model using Javascript?
> >>>> You may want to read the first few chapters of a JavaScript language
> >>>> book. This is the only recommended book.
> >>>> <URL:http://jibbering.com/faq/#FAQ3_1>
> >>>> Peter
> >>> Thank you guys for both of your answers.
> >>> The reason i want it to create an array is because after creating the
> >>> array i want to create 2 combobox using the JavaScript DOM and
> >>> populate the object options with the values of the array
> >>> The first combobox will be populated with the items in LIST A and the
> >>> second combobox will contain the items associated with selection in
> >>> the first combobox.
> >>> I already have the DOM function and now i have the array part.
> >>> For your info, the DOM goes something like this:
> >>> ...
> >>> var tagForm = document.createElement('form');
> >>> var tagSelect = document.createElement('select');
> >>> tagSelect.setAttribute('name', 'Albums');
> >>> for (i=0; i<subalbumsElems.length; i++)
> >>> {
> >>> ...
> >>> var tagOption = document.createElement('option');
> >>> tagOption.setAttribute('value', i);
> >>> tagOptionValue = document.createTextNode('....');
> >>> tagOption.appendChild(tagOptionValue)
> >>> tagSelect.appendChild(tagOption);
> >>> } //end for
> >>> tagForm.appendChild(tagSelect);
> >>> ...
> >> 1. Create a function to change second combo based on first combobox's
> >> selected value.
> >> 2. Create a multidimensional array in the way as -Lost or Peter
> >> suggest.
> >> 3. Create your first combobox, and fill its options attribute. Point
> >> its change event to function created in no (1).
> >> 4. Create your second combobox, with blank options.
>
> >> HTH
>
> > Thanks HTH,
>
> Um... I think that was "Hope that helped." 
>
> --
> -Lost
> Remove the extra words to reply by e-mail. Don't e-mail me. I am
> kidding. No I am not.
I need help on how to get a handle on the second combobox so i can
fill it up with values.
The filling issue, i have no problems (it's the same concept as
filling up the first comobobox).
It's how i tell the first combobox 'onchange' function to get a handle
on the second one and populated.
Here's how the code works:
......
//HERE I CREATE THE 1 AND 2 COMBOBOX USING JavaScript DOM
//I FILL UP THE FIRST COMBOBOX AND CREATE AN EMPTY SECOND COMBOBOX
//the onchange function 'addValueto2Comobobox' in the 1 combobox is
were i attempt to fill up the 2 combobox
function createCombobox(Album)
{
var divHeader = document.getElementById("container_header");
var tagForm = document.createElement('form');
var tagSelect = document.createElement('select');
tagSelect.setAttribute('size', '1');
tagSelect.setAttribute('name', 'album');
tagSelect.onchange = function() { addValueto2Comobobox(Album, i,
this); } //Album= the array containing the values
var i=0;
for (var itemvalue in Album) //loop through the album object
{
var tagOption = document.createElement('option');
tagOption.setAttribute('value', i);
if (!i) { tagOption.setAttribute('selected', 'selected'); } //if this
is the first element, add extra attribute to <tagOption>
tagOptionValue = document.createTextNode(itemvalue);
tagOption.appendChild(tagOptionValue)
tagSelect.appendChild(tagOption);
i++;
}
tagForm.appendChild(tagSelect);
//create a second combobox(empty with no values) for the subalbums
var tagSelect = document.createElement('select');
tagSelect.setAttribute('size', '1');
tagSelect.setAttribute('name', 'subalbum');
tagSelect.onchange = function() { dosomething(this); }
tagForm.appendChild(tagSelect);
divHeader.appendChild(tagForm);
}
//HERE's WHERE IM STUCK... I JUST NEED TO GET A HANDLE ON THE SECOND
COMBOBOX
function addValueto2Comobobox(album, id, obj)
{
.....
?????.options.length = 0; //empty the newly created 2 combobox
var x=0;
for (var p in album) //loop through the album object
{
for (var i=0; i<album[p].length; i++) //loop through the
subalbums
{
?????.options[x] = new Option(album[p][i], i); //add an
'option' value to the second combobox
x++;
}
}
....
}
Need help one more time guys
Maybe i should create a new post for this...
Thanks in advance
Marco