Добрый день, у меня есть объект, при открытии странице я пробегаю по нему и назначаю addEventListener id которые находятся в объекте.
objPageKalib={
//--------------------------------------------------------------------------
// "Id_IN_kalib_Kp": { },
// "id_td_U_250": { },
// "Id_IN_Kalib_Pout": { },
//--------------------------------------------------------------------------
"Id_SaveKalib": {
Type: 'click',
action: function(element, data, index){download_mib('Load_kalib.BIN');}
},
//--------------------------------------------------------------------------
"Id_OpenFileKalib": {
Type: 'change',
action: function(element, data, index){KalibOpenfile(element);}
},
//--------------------------------------------------------------------------
"Id_IN_kalib_descusion": {
Type: 'change',
action: function(element, data, index){KalibSavePage('KalibDescus.CGI','Id_IN_kalib_descusion');}
},
..............................
}
Со временем объект очень быстро вырос и я начинил разделять, постранично. Т.е на каждую страницу по своему объекту, а при загрузке страницы все объекты объеденяються в один получился вот такой косталь. Как можно сделать это более универсальные?
Что бы можно было надробить объект даже одной страницы на несколько частей, и потом не забывать их все сгруппировать(что бы автоматически это получалось).
Пока думаю сделать объект из объектов,в который буду добавляться мелкие объекты. А цикл переписать что бы он проходил по всем объектам и добавлял события. Есть ещё какие нибудь решения ?
/**
* Overwrites obj1 values with obj2 and adds obj2 if non existent in obj1
* @param obj1
* @param obj2
* @returns obj3 a new object based on obj1 and obj2
*/
function merge_options(obj1,obj2){
var obj3 = {};
for (var attrname in obj1) { obj3[attrname] = obj1[attrname]; }
for (var attrname in obj2) { obj3[attrname] = obj2[attrname]; }
return obj3;
}
//==================================================================================================
/*
* @Описание: Описание функции.
* @Параметр:
* @Возврат: Нету
*/
window.addEventListener('DOMContentLoaded', function() {
var obj = {};
obj=merge_options(objOnclick,objOnInput);
obj=merge_options(obj,objOnChange);
obj=merge_options(obj,objPageKalib);
obj=merge_options(obj,objPageState);
obj=merge_options(obj,EventButt);
for(var el in obj) {
var handler = obj[el];
var Type = handler.Type;
if(typeof Type === 'undefined'){
continue;
}
console.log(el);
var butt=document.getElementById(el);
console.log(butt);
butt.addEventListener(Type,handler.action);
if(typeof handler.Run === 'undefined'){
//console.log(handler);
}else{
handler.Run();
}
//butt.addEventListener('click',handler.action);
}
});
PS: Мелкие объекты хочу вынести в отдельные файлы вообще, или куски объекта если можно ?