Оба ваших файла скриптов присваивают значение вашей переменной Custom
. Когда второй из двух файлов загружен, он перезаписывает предыдущее назначение на Custom
. Даже если у вас есть отдельные функции inita
и initb
, весь объект Custom
перезаписывается при загрузке второго файла JS.
Таким образом, если FBcheckbox.js загружается первым, inita
определяется внутри объекта, но когда TWcheckbox.js загружает и переназначает содержимое Custom
вместо добавления к нему, inita
больше не существует, когда страница событие load запускается, потому что версия TWcheckbox.js Custom
не включает inita
.
Поскольку кажется, что единственными функциями, которые отличаются в пределах объекта Custom
в ваших файлах JS, являются inita
и initb
, я бы рекомендовал назначать их вместе в файле. Что-то вроде:
var Custom = {
inita: function() {
// ...your code here...
},
initb: function() {
// ...your code here...
},
pushed: function() {
// ...your code here...
},
// etc...
};
Если вы хотите оставить их разделенными, вы можете добавить код, который проверяет существование объекта до его присвоения, и, если объект существует, добавить к нему, а не переназначать его целиком. Тем не менее, я думаю, что объединение этих двух, как указано выше, уменьшит дублирование в вашем коде.
if (typeof(Custom)!="undefined" && !Custom.inita) {
Custom.inita = function() { /* ...your code here... */ }
} else if (typeof(Custom)=="undefined") {
var Custom = {
// ...your code here...
};
};
Назначение обеих функций инициализации с помощью window.onload
представляет одну и ту же проблему. Файл JS, загруженный последним, перезапишет ранее назначенное значение window.onload, а не добавит к нему. Чтобы назначить более одной функции для запуска загрузки страницы, вы должны использовать синтаксис, подобный следующему:
В FBcheckbox.js:
if (window.addEventListener) {
window.addEventListener("load",Customa.inita,false);
} else if (window.attachEvent) {
window.attachEvent("onload",Customa.inita);
}
В TWcheckbox.js:
if (window.addEventListener) {
window.addEventListener("load",Customb.initb,false);
} else if (window.attachEvent) {
window.attachEvent("onload",Customb.initb);
}