К примеру, у нас есть какой-то div
, при нажатии на ссылку которого происходит смена класса в другом диве:
function active(element) {
//Очищаем все уже нажатые элементы
for (var i = 1; i < N; i++) {
var clear = document.getElementById("tab_" + i);
clear.className = "cont" + i;
}
//Присваиваем новый класс нажатому элементу
var block = document.getElementById("tab_" + element);
if (block.className == "cont" + element) {
block.className = "cont" + element + " is_active";
}
}
<div><a href="#" onclick="active('1');">Смени меня</a></div>
<div><a href="#" onclick="active('2');">Смени меня</a></div>
<div id="tab_1" class="cont1 is_active">
<p>Первый див</p>
</div>
<div id="tab_2" class="cont2">
<p>Второй див</p>
</div>
Из кода видно, что функция active
вызывается при нажатии на конкретную ссылку через onclick
. Но как сделать вызов этой функции, чтобы в атрибутах стоял только id
? Как должен измениться JS, кроме того, что он станет каким-то "пассивным" обработчиком? Могу ошибаться в формулировке.
Может слегка костыльно, но написал на коленке.
[...document.querySelectorAll("a")].forEach((item, index) => {
item.addEventListener("click", (e) => {
let foo = document.querySelectorAll("p");
for (var i = 0; i < foo.length; i++) {
if (foo[i].classList.contains("active")) {
foo[i].classList.remove("active");
} else {
foo[index].classList.add("active");
}
}
});
});
.active {
background: pink;
}
<a href="#">Click me 1</a>
<a href="#">Click me 2</a>
<p>Some text 1</p>
<p>Some text 2</p>
Вот так, наверное, попытался не трогать вашу оригинальную функцию active(element)
function active(element) {
//Очищаем все уже нажатые элементы
for (var i = 1; i < 3; i++) {
var clear = document.getElementById("tab_" + i);
clear.className = "cont" + i;
}
//Присваиваем новый класс нажатому элементу
var block = document.getElementById("tab_" + element);
if (block.className == "cont" + element) {
block.className = "cont" + element + " is_active";
}
}
[].slice.call(document.querySelectorAll('.clickable'))
.forEach((el, i) => el.onclick = active.bind(null, i+1));
.is_active{
background-color: red;
}
<div><a href="#" class='clickable'>Смени меня</a></div>
<div><a href="#" class='clickable'>Смени меня</a></div>
<div id="tab_1" class="cont1 is_active">
<p>Первый див</p>
</div>
<div id="tab_2" class="cont2">
<p>Второй див</p>
</div>
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть канвас, на нем сетка, которую можно перерисовывать по нажатию на кнопки
Есть таймлайн на сайте, при попытке редактировать текст(уменьшить количество символов), вся верстка едет к чертямНе понимаю в чем дело CSS:
Пару раз сталкивался с сайтами, на которых нельзя посмотреть стили страницы, те допустим я сижу с хрома, и кликая правой кнопкой мыши - ноль...
Я через сервлет вывожу информацию из MySQL в виде таблицы (name и surname)Он работает правильно, но когда выводится таблица он без линии между ячейками