Показать сообщение отдельно
  #8 (permalink)  
Старый 28.09.2010, 09:50
Новичок на форуме
Отправить личное сообщение для мшеул Посмотреть профиль Найти все сообщения от мшеул
 
Регистрация: 23.09.2010
Сообщений: 7

проблема по-тихоньку решается
Как показали эксперименты проблема была в другом месте (как всегда в таких случаях).
//добавляет строку опций для полей фильтра, отчета, вычислений, объединенных вычислений
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('ид таблицы'). Понимаю, объяснять я мастер , но как умею... Спасибо все, кто откликнулся. Надеюсь кому-то этот топик поможет избежать таких же ошибок. После выложу исправленную версию.
Ответить с цитированием