Итак, у меня есть этот код для моего сайта, который я создал сам и отлично работает. Дело в том, что я хочу, чтобы код JavaScript был «чище». Я читал, что JavaScript - это совсем не переписывающий код. Проблема в том, что я действительно не знаю, как реструктурировать функции dropDownOne через dropDownSeven. Каждая из функций соответствует определенной кнопке, которая при щелчке показывает соответствующий информационный блок, применяя к нему класс 'show', который получил только одно свойство: Display: block;Как переписать этот код?
Итак, чтобы обернуть его: как мне получить, чтобы переделать код, так что мне нужно только сказать, что одна функция для всех кнопок, чтобы щелкнуть. Если нажата конкретная кнопка, содержимое этой кнопки должно отображаться, а не другое.
-Нет jQuery-
HTML:
<div class="dropdown">
<button onclick="dropDownFour()" class="projectbuttons">
PSD to Bussiness Site (01-2017)
</button>
<div id="dropdownfour" class="dropdown-content">
<!--Content-->
</div>
</div>
JavaScript:
function dropDownOne() {
document.getElementById("dropdownone").classList.toggle("show");
}
function dropDownTwo() {
document.getElementById("dropdowntwo").classList.toggle("show");
}
function dropDownThree() {
document.getElementById("dropdownthree").classList.toggle("show");
}
function dropDownFour() {
document.getElementById("dropdownfour").classList.toggle("show");
}
function dropDownFive() {
document.getElementById("dropdownfive").classList.toggle("show");
}
function dropDownSix() {
document.getElementById("dropdownsix").classList.toggle("show");
}
function dropDownSeven() {
document.getElementById("dropdownseven").classList.toggle("show");
}
window.onclick = function (event) {
if (!event.target.matches('.aboutmebuttons, .projectbuttons,
#mailopenbutton, [name="name"],
[name="message"], ' + '[name="email"],
[name="submitmail"], [name="reset"],
#dropdownseven, #mailform')
) {
var dropDowns = document.getElementsByClassName("dropdown-content");
for (var i = 0; i < dropDowns.length; i++) {
var openDropDown = dropDowns[i];
if (openDropDown.classList.contains('show')) {
openDropDown.classList.remove('show');
}
}
}
}
Спасибо!
Помещенных идентификаторы в массиве, кольцует, сохранить общую функцию и передать значения этой функции в цикле. –
Это должно быть в http: // codereview.stackexchange.com/ –