Ich schrieb einige JavaScript für ein Menü toggle, jetzt möchte ich diese für mehrere Elemente wiederverwenden und ich kämpfe auf, wie ich eine Schließung erstellen kann, um dies richtig zu machen.Probleme mit JavaScript Closures haben
Jetzt ist die Wirkung nur auf dem letzten registrierten Element, becaus des Umfangs der Setup-Optionen usw.
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')});