<div id="ranging_1" class="ranging_1">
... еще много дочерних элементов разного типа ...
</div>
<div id="ranging_2" class="ranging_2">
... еще много дочерних элементов разного типа ...
</div>
<div id="ranging_3" class="ranging_3">
... еще много дочерних элементов разного типа ...
</div>
<a class="selector" href="#" onclick="openRanging_1()">Клац</a>
<a class="selector" href="#" onclick="openRanging_2()">Клац</a>
<a class="selector" href="#" onclick="openRanging_3()">Клац</a>
@for $i from 1 through 37 {
.ranging_#{$i} {
display: none;
}
}
var ranging_1 = document.getElementById('ranging_1');
var ranging_1 = document.getElementById('ranging_2');
var ranging_1 = document.getElementById('ranging_3');
var arrayRanging = [ranging_1, ranging_2, ranging_3, ranging_4, ranging_5, ranging_6, ranging_7, ranging_8, ranging_9, ranging_10, ranging_11, ranging_12, ranging_13, ranging_14, ranging_15, ranging_16, ranging_17, ranging_18, ranging_19, ranging_20, ranging_21, ranging_22, ranging_23, ranging_24, ranging_25, ranging_26, ranging_27, ranging_28, ranging_29, ranging_30, ranging_31, ranging_32, ranging_33, ranging_34, ranging_35, ranging_36, ranging_37];
function openRanging_1() {
arrayRanging[0].style.display = 'block';
for (var i = 0; i <= arrayRanging.length; i++) {
arrayRanging[i].style.display = 'none';
}
}
function openRanging_2() {
arrayRanging[1].style.display = 'block';
for (var i = 0; i <= arrayRanging.length; i++) {
arrayRanging[i].style.display = 'none';
}
}
function openRanging_3() {
arrayRanging[2].style.display = 'block';
for (var i = 0; i <= arrayRanging.length; i++) {
arrayRanging[i].style.display = 'none';
}
}
.ranging {
display: none;
}
.ranging.opened {
display: block;
}
const buttonSelector = '.selector';
const contentSelector = '.ranging';
const activeClass = 'opened';
const toggleContent = (contents, index) =>
contents.forEach((n, i) => n.classList.toggle(activeClass, i === index));
// делегирование, назначаем обработчик клика один раз для всех кнопок
// наверное, у них есть какой-то общий предок, тогда вместо документа
// вешать обработчик следует на него:
// document.querySelector('селектор_контейнера_с_кнопками').addEventListener(...
document.addEventListener('click', e => {
const button = e.target.closest(buttonSelector);
if (button) {
const buttons = document.querySelectorAll(buttonSelector);
const index = Array.prototype.indexOf.call(buttons, button);
toggleContent(document.querySelectorAll(contentSelector), index);
}
});
// или, назначаем обработчик клика индивидуально каждой кнопке
const onClick = function(e) {
toggleContent(this, +e.currentTarget.dataset.index);
}.bind(document.querySelectorAll(contentSelector));
document.querySelectorAll(buttonSelector).forEach((n, i) => {
n.dataset.index = i;
n.addEventListener('click', onClick);
});
<div id="ranging_1" class="ranging">
... еще много дочерних элементов разного типа ...
</div>
<div id="ranging_2" class="ranging">
... еще много дочерних элементов разного типа ...
</div>
<div id="ranging_3" class="ranging">
... еще много дочерних элементов разного типа ...
</div>
...
<a class="selector" href="#" data-rating-id='ranging_1'>Клац</a>
<a class="selector" href="#" data-rating-id='ranging_2'>Клац</a>
<a class="selector" href="#" data-rating-id='ranging_3'>Клац</a>
var rangings = [].slice.call(document.querySelectorAll('.ranging'));
var selectors = [].slice.call(document.querySelectorAll('.selector'));
selectors.forEach(function(selector) {
selector.addEventListener('click', function(e) {
e.preventDefault();
var ranging = document.getElementById(e.target.dataset.ratingId);
ranging.style.display = '';
rangings.forEach(function(item) {
if (item.id !== e.target.dataset.ratingId) {
item.style.display = 'none';
}
})
});
})
function clickInfo() {
for(var i = 0; i <= arrayRanging.length; i++) {
arrayRanging[i].style.display = 'none';
arrayRanging[17].style.display = 'block';
}
}
<script src="js/open_rubrics.js" async></script>
<script src="js/open_rubrics.js" defer></script>
<div class="ranging-box">
<div id="ranging_1" class="ranging js-ranging">
... еще много дочерних элементов разного типа ...
</div>
<div id="ranging_1" class="ranging js-ranging d-none">
... еще много дочерних элементов разного типа ...
</div>
</div>
<div id="selectorList" class="selector-list">
<a class="selector js-selector-active" href="#ranging_1">Клац</a>
<a class="selector" href="#ranging_2">Клац</a>
</div>
.d-none { display: none; }
document.getElementById('selectorList').addEventListener('click', function(e) {
if(e.target.nodeType === "A") {
var activeSelector = document.querySelector('.js-selector-active');
document.getElementById(e.target.href).className -= " d-none";
document.getElementById(activeSelector.href).className += " d-none";
activeSelector.className -= " js-selector-active";
e.target.className += " js-active-selector";
}
})