Forum Moderators: open
When it is split it looks like this:
arTemp[0] "Make"
arTemp[1] "Model"
arTemp[2] "StockNumber"
arTemp[3] "VINLast8"
arTemp[4] "Year"
arTemp[5] "Series"
arTemp[6] "RetailValue"
arTemp[7] "BodyStyle"
arTemp[8] ""
----------------------
I need to figure out how to put var liner in the same order as lblFieldOrder. lblFieldOrder would be different each time. Any ideas?
var arTemp, charCount, i
var liner=new Array( );
liner[0]=document.forms[0].elements["liner_Year_" + vid].value;
liner[1]=document.forms[0].elements["liner_Make_" + vid].value;
liner[2]=document.forms[0].elements["liner_Model_" + vid].value;
liner[3]=document.forms[0].elements["liner_Series_" + vid].value;
liner[4]=document.forms[0].elements["liner_BodyStyle_" + vid].value;
liner[5]=document.forms[0].elements["liner_VINFull_" + vid].value;
liner[6]=document.forms[0].elements["liner_VINLast8_" + vid].value;
liner[7]=document.forms[0].elements["liner_Miles_" + vid].value;
liner[8]=document.forms[0].elements["liner_RetailPrice_" + vid].value;
liner[9]=document.forms[0].elements["liner_InternetPrice_" + vid].value;
arTemp = lblFieldOrder.split("¦");
charCount = 0;
i = 0;
while (i < arTemp.length) {
arTemp1 = arTemp[i].split("¦");
n = 0;
// don't know what needs to go here?
i += 1;
}
1 - [minor])
The
lblFieldOrder string has a trailing ¦ delimiter. Is this necessary, or do you want the last - empty string - member to be created? 2 - [major])
The number of fields in
lblFieldOrder doesn't match the number of elements in the array, liner. Even then, some fields don't match. What kind of order are we after? lblFieldOrder, then carry on" var lblFieldOrder
= 'Make¦Model¦StockNumber¦VINLast8¦Year¦Series¦RetailValue¦BodyStyle¦'
.replace(/\¦$/,'')
.split('¦');
var linerBaseNames =
[
'Year',
'Make',
'Model',
'Series',
'BodyStyle',
'VINFull',
'VINLast8',
'Miles',
'RetailPrice',
'InternetPrice'
];
var liner = new Array;
liner.add = function(name)
{
this[this.length] = elements['liner_'+name+'_'+vid].value;
}
var elements = document.forms[0].elements;
var name, n, field, f;
/* Run through fieldOrder.
If finds matching name, then add field to
liner array; leave flag */
for( n=-1; field=lblFieldOrder[++n]; )
{
for( f=-1; name=linerBaseNames[++f]; )
{
if(field == name)
{
liner.add(field);
linerBaseNames[f] = -1;
break;
}
}
}
/* put remaining names from linerBaseNames
at bottom, keeping order */
for( f=-1; name=linerBaseNames[++f]; )
if( name +1 )
liner.add(name);
>> A trailing ¦¦ is not needed. an empty string - member could be created.
2 - [major])
>> The number of fields in lblFieldOrder won't always match the number of elements in the array, liner. Actually liner doesn't have to be in an array. I just need liner value to be in the same order as lblFieldOrder. The values are pulled from the form element values.
i.e. lblFieldOrder would look like this:
lblFieldOrder = "Make¦Model¦StockNumber¦VINLast8¦Year¦Series¦RetailValue¦BodyStyle¦"
i.e. liner would look like this:
liner = "Chevrolet Corvette FF555JHJ IUIKOOOU 2001 SEDAN $24,000 SDN"
This is the way I had it at first but now I need liner to be in the order of lblFieldOrder
var liner = document.forms[0].elements["liner_Year_" + vid].value;
liner += ' '
liner += document.forms[0].elements["liner_Make_" + vid].value;
liner += ' '
liner += document.forms[0].elements["liner_Model_" + vid].value;
liner += ' '
liner += document.forms[0].elements["liner_Series_" + vid].value;
liner += ' '
liner += document.forms[0].elements["liner_BodyStyle_" + vid].value;
liner += ' '
liner += document.forms[0].elements["liner_VINFull_" + vid].value;
liner += ' '
liner += document.forms[0].elements["liner_VINLast8_" + vid].value;
liner += ' '
liner += document.forms[0].elements["liner_Miles_" + vid].value;
liner += ' '
liner += document.forms[0].elements["liner_RetailPrice_" + vid].value;
liner += ' '
liner += document.forms[0].elements["liner_InternetPrice_" + vid].value;
[color=brown]/* dummy vid value */[/color]
var vid = 'xvid';[color=brown]/* Fields:
1: Remove trailing ¦ (if exists)
2: Split field string into array
(#1 is no longer actually necessary )
*/[/color]
var lblFieldOrder
= 'Make¦Model¦StockNumber¦VINLast8¦Year¦Series¦RetailValue¦BodyStyle¦'
.replace(/\¦$/,'')
.split('¦');
[color=brown]/* liner starts as array */[/color]
var liner = new Array;
[color=brown]/* handy shortcut */[/color]
var elements = document.forms[0].elements;
[color=brown]/* loop fields:
If corresponding form element exists,
push value into liner
*/[/color]
for(var k=0, field, elm; field=lblFieldOrder[k++];)
{
elm = elements['liner_'+field+'_'+vid];
if(elm) liner[liner.length] = elm.value;
}
[color=brown]/* Convert liner into space-delimited string */[/color]
liner = liner.join(' ');
1st Time:
lblFieldOrder = 'Make¦Model¦StockNumber¦VINLast8¦Year¦Series¦RetailValue¦BodyStyle¦'
2nd Time:
lblFieldOrder = 'Make,Model,StockNumber,VINLast8,Year,Series,RetailValue,BodyStyle,'
lblFieldOrder = lblFieldOrder;
alert(lblFieldOrder);
lblFieldOrder = lblFieldOrder.replace(/\¦$/,'');
lblFieldOrder = lblFieldOrder.split('¦');
var liner = new Array;
var elements = document.forms[0].elements;
for(var k=0, field, elm; field=lblFieldOrder[k++];) {
elm = elements['liner_'+field+'_'+vid];
if(elm) liner[liner.length] = elm.value;
}
var linerText = liner.join(' ');
If you are doing this process more than once, just make sure that lblFieldOrder is split into an array somewhere else, then just use the array version.