#javascript #html #css #togglebutton
Вопрос:
Я написал следующий код и столкнулся с проблемами, связанными с тем, чтобы заставить JS работать должным образом.
function online() {
var online = document.getElementById("online");
var requests = document.getElementById("requests");
var blocks = document.getElementById("blocks");
if (online.style.display === "none") {
online.style.display = "block";
requests.style.display = "none";
blocks.style.display = "none";
} else {
online.style.display = "block";
requests.style.display = "none";
blocks.style.display = "none";
}
}
function requests() {
var online = document.getElementById("online");
var requests = document.getElementById("requests");
var blocks = document.getElementById("blocks");
if (requests.style.display === "none") {
online.style.display = "none";
requests.style.display = "block";
blocks.style.display = "none";
} else {
online.style.display = "none";
requests.style.display = "block";
blocks.style.display = "none";
}
}
function blocks() {
var online = document.getElementById("online");
var requests = document.getElementById("requests");
var blocks = document.getElementById("blocks");
if (blocks.style.display === "none") {
online.style.display = "none";
requests.style.display = "none";
blocks.style.display = "block";
} else {
online.style.display = "none";
requests.style.display = "none";
blocks.style.display = "block";
}
}
.friend-list-window {
border: 3px solid rgb(0, 0, 0);
background-color: rgb(160, 156, 156);
color: #fff;
border-collapse: collapse;
border-radius: 5px;
text-align: center;
list-style-type: none;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.friend-list-header {
background: #000;
padding: 4px 0;
display: block;
}
.friend-list-header h4 {
display: inline-block;
width: 90%;
}
.friend-list-details button {
width: 30%;
margin: 5px 0;
padding-top: 2px;
border-bottom: none;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
display: inline-block;
border: none;
text-decoration: none;
text-align: center;
cursor: pointer;
transition: background 250ms ease-in-out, transform 150ms ease;
-webkit-appearance: none;
-moz-appearance: none;
background-color: rgb(182, 175, 175);
}
.friend-list-window input {
width: 90%;
border-radius: 5px;
margin: 5px;
padding: 2px;
height: 15px;
}
.online-users,
.new-requests,
.block-list {
display: inline-block;
width: 90%;
}
.user-available,
.user-request,
.user-block {
display: inline-block;
width: 100%;
}
.user-available ul,
.user-request ul,
.user-block ul {
float: left;
font-size: small;
display: inline-block;
font-weight: bold;
color: black;
}
.user-available button,
.user-request button,
.user-block button {
width: 50px;
float: right;
margin-left: 5px;
border-radius: 5px;
text-decoration: none;
text-align: center;
cursor: pointer;
transition: background 250ms ease-in-out, transform 150ms ease;
-webkit-appearance: none;
-moz-appearance: none;
}
.friend-list-details button:hover {
background-color: greenyellow;
}
.friend-list-details button {
background: ivory;
}
.remove-friend,
.reject-request {
border: 1px solid white;
background-color: red;
color: white;
font-weight: bold;
font-size: x-small;
}
.message-friend,
.accept-request,
.unblock-user {
border: 1px solid white;
background-color: green;
color: white;
font-weight: bold;
font-size: x-small;
}
<div class="friend-list-window" id="frndlist">
<div class="friend-list-header">
<h4>Friend List</h4>
</div>
<div class="friend-list-details">
<button type="button" onclick="online()"><i class="fas fa-users"></i> Online</button>
<button type="button" onclick="requests()"><i class="fas fa-user-plus"></i> Requests</button>
<button type="button" onclick="blocks()"><i class="fas fa-users-slash"></i> Block List</button>
</div>
<input type="text" placeholder="Search">
<div class="online-users" id="online">
<div class="user-available">
<ul>Groot</ul>
<button class="remove-friend">Unfriend</button>
<button class="message-friend">Chat</button>
</div>
<div class="user-available">
<ul>Groot</ul>
<button class="remove-friend">Unfriend</button>
<button class="message-friend">Chat</button>
</div>
<div class="user-available">
<ul>Groot</ul>
<button class="remove-friend">Unfriend</button>
<button class="message-friend">Chat</button>
</div>
</div>
<div class="new-requests" id="requests">
<div class="user-request">
<ul>Groot</ul>
<button class="reject-request">Reject</button>
<button class="accept-request">Accept</button>
</div>
<div class="user-request">
<ul>Groot</ul>
<button class="reject-request">Reject</button>
<button class="accept-request">Accept</button>
</div>
<div class="user-request">
<ul>Groot</ul>
<button class="reject-request">Reject</button>
<button class="accept-request">Accept</button>
</div>
</div>
<div class="block-list">
<div class="blocked-user" id="blocks">
<div class="user-block">
<ul>Groot</ul>
<button class="unblock-user">Unblock</button>
</div>
<div class="user-block">
<ul>Groot</ul>
<button class="unblock-user">Unblock</button>
</div>
<div class="user-block">
<ul>Groot</ul>
<button class="unblock-user">Unblock</button>
</div>
</div>
</div>
</div>
Когда веб-сайт загружается, он отображается именно так
Когда я нажимаю на любую из кнопок, скажем, Запросы или Список блокировок, вот как это отображается
Когда я снова нажимаю «Онлайн», вот как это отображается
Итак, как вы можете видеть, я не уверен, что я здесь делаю неправильно и что приводит к тому, что данные не отображаются, когда я нажимаю на Запросы или Список блокировок, и что вызывает проблему с форматированием, когда я снова нажимаю Онлайн.
Заранее спасибо
Комментарии:
1. Ваш фрагмент не воспроизводит вашу проблему. Возможно, вы могли бы отредактировать свой код и включить соответствующий код, который поможет воспроизвести вашу проблему? Я не вижу прослушивателей событий в вашем JS, так как же вы обрабатываете события кнопок?