Как показали эксперименты
проблема была в другом месте (как всегда в таких случаях).
//добавляет строку опций для полей фильтра, отчета, вычислений, объединенных вычислений
function appendFOptionsRow(destinationElementId,field2R){
switch(destinationElementId){
case 'result_field4filter_slc':
var getOptionsTableHeader = getFFOptionsTableHeader;
var getOptionsRow = getFFOptionsRow;
var refreshOptions = checked_values;
var refreshOptionsArg = 'get_filter_button_id';
var inDiv = 'result_field4filter_type_div';
break;
case 'result_field4report_slc':
var getOptionsTableHeader = getRFOptionsTableHeader;
var getOptionsRow = getRFOptionsRow;
var refreshOptions = refresh_option4r_field;
var refreshOptionsArg = '';
var inDiv = 'result_field4report_sort_div';
break;
case 'result_field4calc_slc':
var getOptionsTableHeader = getCFOptionsTableHeader;
var getOptionsRow = getCFOptionsRow;
var refreshOptions = '' ;
var refreshOptionsArg = '';
var inDiv = 'result_field4calc_type_div';
break;
case 'result_field4union_slc':
var getOptionsTableHeader = getUFOptionsTableHeader;
var getOptionsRow = getUFOptionsRow;
var refreshOptions = refreshUnionOption; //для соответствующих функций "включим" список разделителей
var refreshOptionsArg = '';
var inDiv = 'result_field4v_union_type_div';
break;
default:
return;
}
var len = field2R.key.length;
var buf = document.createElement("DIV");
//ШАПКА или указатель на таблицу
var r4table = getOptionsTableHeader(field2R);
var mode = r4table[0];
var table = r4table[1];
if ( len != 0 ) {
for(var i=0; i<len; i+=1){
//вставляем в i строку таблицы table значения из массива field2R
//alert ('строка: '+i+' key: '+field2R.key[i]+' val: '+field2R.val[i])
getOptionsRow(table,i,field2R);
}
}else{
return;
}
if ( mode == 'create' ) {
buf.appendChild(table);
document.getElementById(inDiv).innerHTML = buf.innerHTML;
}
if(refreshOptions != ''){
refreshOptions(refreshOptionsArg); //обновим видимость опций полей в зависимости от типа КО
}
}
Просьба не пинать за представленный код, а предложить пути по улучшению(если есть желание и смотреть на него без слез не можете
).
Проблема была в том что, при добавлении в таблицу первой строки функцией getOptionsRow(table,i,field2R); таблица создавалась только одновременно с ней, висела в памяти, но на форму не добавлялась. Первая же строка с селектами добавлялась в table-объект в памяти (table=createElement('table')), но не объект на документе document.getElementById('ид таблицы'). Только после добавления первой строки таблица добавлялась на страницу. Строка появлялась, но функции и свойство name не включались в объект select (id почему-то появлялось). Последующие же строки уже добавлялись в table=document.getElementById('ид таблицы'). Понимаю, объяснять я мастер
, но как умею... Спасибо все, кто откликнулся. Надеюсь кому-то этот топик поможет избежать таких же ошибок. После выложу исправленную версию.