Я хотел бы знать, как я могу определить большую переменную для набора переменных, которые я имею в javascript: showFootnotesPanel();
, showReferencesPanel();
, showImagesPanel();
, showInformationPanel();
.Как определить переменную нескольких переменных в JavaScript
Будет ли это примерно так?
function showPanel() {
var x = [showFootnotesPanel();showReferencesPanel();showImagesPanel();showInformationPanel();]
}
Update:
У меня есть эта функция, которая используется, чтобы открыть боковую панель с правой стороны и цвет содержание:
var els = document.getElementsByClassName('change-color'),
target = document.getElementsByClassName('resources'),
changeColor = function(a) {
elements = document.getElementsByClassName("note");
for (var i = 0; i < elements.length; i++) {
console.log(elements[i])
elements[i].style.backgroundColor = "";
}
target = a.getAttribute('href');
element = document.querySelector('[data-id="' + target.substring(1, target.length) + '"]');
element.style.backgroundColor = a.getAttribute('data-color');
};
for (var i = els.length - 1; i >= 0; --i) {
els[i].onclick = function() {
showFootnotesPanel();
changeColor(this);
}
Теперь у меня есть 4 боковые панели, которые должны отвечать к тому же сценарию, и я подумал, что, определив что-то вроде showPanel()
, showFootnotesPanel()
или showReferencesPanel()
или showImagesPanel()
или showInformationPanel()
Я мог бы упростить вещи, поэтому последняя строка скрипта быть это вместо того, чтобы просто:
els[i].onclick = function(){showPanel();changeColor(this);}
Update 2:
Или это можно сделать с помощью логического оператора OR
?
els[i].onclick = function(){showFootnotesPanel(); || showReferencesPanel(); || showImagesPanel(); || showInformationPanel();changeColor(this);}
Update 3:
Это новый сценарий, который я использую, чтобы скрыть и показать панели:
function showPanel(myPanel) {
var elem = document.getElementById(myPanel);
if (elem.classList) {
console.log("classList supported");
elem.classList.toggle("show");
} else {
var classes = elem.className;
if (classes.indexOf("show") >= 0) {
elem.className = classes.replace("show", "");
} else {
elem.className = classes + " show";
}
console.log(elem.className);
}
}
function hideOthers(one, two, three, four) {
if (one > "") {
var elem1 = document.getElementById(one);
var classes = elem1.className;
elem1.className = classes.replace("show", "");
}
if (two > "") {
var elem2 = document.getElementById(two);
var classes = elem2.className;
elem2.className = classes.replace("show", "");
}
if (three > "") {
var elem3 = document.getElementById(three);
var classes = elem3.className;
elem3.className = classes.replace("show", "");
}
if (four > "") {
var elem4 = document.getElementById(four);
var classes = elem4.className;
elem4.className = classes.replace("show", "");
}
return;
}
И это скрипт, который вызывает панель и выделяет текст на них:
var els = document.getElementsByClassName('change-color'),
target = document.getElementsByClassName('resources'),
changeColor = function(a) {
elements = document.getElementsByClassName("note");
for (var i = 0; i < elements.length; i++) {
console.log(elements[i])
elements[i].style.backgroundColor = "";
}
target = a.getAttribute('href');
element = document.querySelector('[data-id="' + target.substring(1, target.length) + '"]');
element.style.backgroundColor = a.getAttribute('data-color');
};
for (var i = els.length - 1; i >= 0; --i) {
els[i].onclick = function() {
hideOthers('footnotes-section', 'references-section', 'images-section', 'information-section');
showPanel('references-section');
changeColor(this);
}
}
Спасибо!
что вы пытаетесь сделать, есть несколько способов сделать это. Если вы скажете, что вам нужно, у вас будет лучший ответ. –
У меня есть ощущение, что вы просто хотите упростить код и иметь одну функцию вместо 4,5 различных функций? – sinisake
Я знал ... Передайте разные аргументы функции showPanel() и на основе аргументов - запустите код. Если 5 функций выполняют одно и то же действие с 5 различными элементами на странице - да, вы правы, это может/должна быть одной функцией. – sinisake