Да, есть способ!
Вы можете получить все свои элементы, выполнить их итерацию через forEach
и назначить свою функцию их onclick
свойству:
document.querySelectorAll('.setup').forEach(div => {
div.onclick = showElem;
});
Выполнениеэто, вы можете избавиться от onlick
в ваших HTML-элементах.
Чтобы получить их дочерний элемент (тот, который вы хотите скрыть / показать, очевидно), ваша функция show()
может выглядетьвот так:
function show() {
const hidden = this.getElementsByClassName('hidden')[0];
if (hidden.style.display == 'none') {
hidden.style.display = 'block';
} else {
hidden.style.display = 'none';
}
}
И все вместе:
document.querySelectorAll('.setup').forEach(div => {
div.onclick = show;
});
function show() {
const hidden = this.getElementsByClassName('hidden')[0];
if (hidden.style.display == 'none') {
hidden.style.display = 'block';
} else {
hidden.style.display = 'none';
}
}
.setup {
border-top: solid #ccc 3px;
border-bottom: solid #ccc 3px;
margin-bottom: 5%;
}
.setup:hover {
cursor: pointer;
}
.hidden {
text-align: center;
font-weight: bold;
border-top: solid black 3px;
border-bottom: solid black 3px;
background-color: yellow;
display: none;
}
<div class="setup">
Click to show
<p class="hidden">
I'm some stuff
</p>
</div>
<div class="setup">
Click to show
<p class="hidden">
I'm more stuff
</p>
</div>
JS Fiddle: http://jsfiddle.net/ba7yfmz6/38/
Дополнительная информация:
forEach
querySelectorAll()