Здравствуйте. Проблема следующая.
//возвращает элемент select с заданными параметрами
function getSlc(slcParam){
//alert('sel1');
//var selParam = {sId:'id',sName:'name',sItems:[]};
var slc = document.createElement('SELECT');
slc.id = slcParam.sId;
slc.name = slcParam.sName;
slc.setAttribute('NAME',slcParam.sName); //в IE работает а так slc.name = 'name' нет...
if(slcParam.sFunct != undefined){
var slcMethod = slcParam.sFunct.sMethod;
var usrHandler = slcParam.sFunct.sHandler;
var usrHandlerArg = slcParam.sFunct.sHandlerArg;
//alert(usrHandler+'('+usrHandlerArg+')');
slc.onchange = usrHandler+'('+usrHandlerArg+')'; //грамотно вот так (function() {func(arg);}); #@$%#$%!!!! TODO но не работает! почему!!!?
//slc.setAttribute(slcMethod,usrHandler);
}
var len = slcParam.sItems.length;
var defaultItems = 0; var defaultItemsFlag = false;
var selectedItems = 0; var selectedItemsFlag = false;
//цикл по основному списку-источнику полей
for(var i=0; i<len; i+=1){
if ( i == defaultItems) { defaultItemsFlag = true; }else{ defaultItemsFlag = false; } //опция, которая выделена
if ( i == selectedItems) { selectedItemsFlag = true; }else{ selectedItemsFlag = false; } //опция, которая будет выделена при сбросе формы
var opt = new Option(slcParam.sItems[i],i,defaultItemsFlag,selectedItemsFlag); //var newOpt = new Option("text", "value", isDefaultSelected, isSelected);
slc.options[i] = opt;
}
//alert('slc name: '+slc.name);
return slc;
}
//возвращает строку опций для поля фильтра
function getFFOptionsRow(table,i,field2R){
var tablePreffiks = 'FF';
var newRow = table.insertRow(-1); //добавляем строку в созданной таблице
newRow.className = 'tableData';
newRow.id = tablePreffiks+'tableData_'+field2R.key[i];
//имя поля
var newCell = newRow.insertCell(-1); //в созданной строке добавляем столбец
newCell.align = 'right'; //указываем позиционирование по центру
newCell.innerHTML = ' '+field2R.val[i]+' ';
//тип фильтра
var newCell = newRow.insertCell(-1); //в созданной строке добавляем столбец
newCell.align = 'center'; //указываем позиционирование по центру
var slcParam = {
sId : 'field_'+field2R.key[i]+'_filter_type_slc',
sName : 'field_'+field2R.key[i]+'_filter_type',
sItems : globalArrayOfFilterTypes
};
var slc = getSlc(slcParam);
alert('slc name: '+slc.name);
var buf = document.createElement('SELECT'); //опять работа ушами... ну не хочет appendChild добавлять элемент нормально - событие почему-то записано нормально с функцией, а не срабатывает (при повторном добавлениии новых строк в уже существующую таблицу)
buf.appendChild(slc);
alert('buf: '+buf.innerHTML);
newCell.innerHTML = buf.innerHTML;
//newCell.appendChild(slc);
}
При добавлении элемента select (slc) свойство name, устанавливаемое в getSlc(slcParam) куда-то пропадает. Статьи про различия свойств и аттрибутов прочитал и различия вроде понял. Но почему через slc.setAttribute('name',slcParam.sName); работает, а через свойство name - нет. Да, все это безобразие проверяется под IE8.