メニュートグル用のJavaScriptをいくつか書きましたが、これを複数の要素に再利用して、これを正しい方法で行うためにクロージャを作成する方法を苦労しています。効果は、唯一の最後の登録の要素であるなどのセットアップオプションの範囲JavaScriptクローズに問題がありました
var selectGroup = (function() {
var defaults = {
element: document.getElementById('form-select'),
};
var setup = {
open: false
};
var opt = {};
self.init = function (options) {
opt = options || defaults;
opt.element = options.element || defaults.element;
setup.navButton = opt.element.getElementsByClassName('nav-button')[0];
setup.ulTag = opt.element.getElementsByTagName('ul')[0];
setup.buttonArrow = opt.element.getElementsByTagName('span')[1];
registerEvents();
};
registerEvents = function() {
opt.element.onclick = function() {
if (setup.open) {
setup.buttonArrow.setAttribute('class', 'expand-arrow');
setup.ulTag.setAttribute("style", 'max-height:0;');
} else {
setup.buttonArrow.setAttribute('class', 'contract-arrow');
setup.ulTag.setAttribute("style", 'max-height:600px;');
}
/*Toggle*/
setup.open = !setup.open;
}
};
return self;
})();
selectGroup.init({element: document.getElementById('person-nav')});
selectGroup.init({element: document.getElementById('situation-nav')});
selectGroup.init({element: document.getElementById('region-nav')});