Я сейчас попробовал все решение и они не работают если
Вот таких блоков 2 <div class="blok"> <button class="kvadrat aktiv"></button> <button class="kvadrat"></button> <button class="kvadrat"></button> </div> А у меня таких блоков вообще шесть штук |
<div class="blok">
<button class="kvadrat aktiv"></button>
<button class="kvadrat"></button>
<button class="kvadrat"></button>
</div>
<div class="blok">
<button class="kvadrat aktiv"></button>
<button class="kvadrat"></button>
<button class="kvadrat"></button>
</div>
Вот если их два то все не работает. |
Сергей Ракипов,
а подумать? если блоков много, может добавить цикл по блокам? или может клик поставить на родителя блоков? |
делегирование
Сергей Ракипов,
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>index</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="index">
<meta name="Keywords" content="index">
<style>
.blok{
width: 400px;
height: 100px;
margin: 10px auto;
display: flex;
justify-content: space-around;
}
.kvadrat{
width: 100px;
height: 100px;
border: 3px solid #000;
}
.kvadrat.aktiv{
border: 3px solid #0504aa;
}
.kvadrat:focus{
outline: none;
}
</style>
</head>
<body>
<div class="blok">
<button class="kvadrat aktiv"></button>
<button class="kvadrat"></button>
<button class="kvadrat"></button>
</div>
<div class="blok">
<button class="kvadrat aktiv"></button>
<button class="kvadrat"></button>
<button class="kvadrat"></button>
</div>
<div class="blok">
<button class="kvadrat aktiv"></button>
<button class="kvadrat"></button>
<button class="kvadrat"></button>
</div>
<script>
let body = document.body;
let aktiv = ({target}) => {
target = target.closest(".kvadrat");
if(!target) return;
let parent = target.closest(".blok");
let current = parent.querySelector(".kvadrat.aktiv");
current && current.classList.remove("aktiv");
target.classList.add("aktiv");
}
body.addEventListener("click", aktiv);
</script>
</body>
</html>
|
рони,
Делегирование как то мне не далось в начале для понимание, сейчас его всяческий избегаю. Нужно снова уделить этому время. Спасибо. |
| Часовой пояс GMT +3, время: 22:10. |