Я не знаю, как описать это, не делая его более сложным.
Итак, посмотрите на результат кода и нажмите на первую ссылку с «Показывать», затем вторую и третью.
Когда вторая ссылка нажата, первая закрывается, но текст остается «Спрятать», и я хочу, чтобы он изменился на «Показать».
Итак, при нажатии ссылки обнаружите, есть ли у какой-либо другой ссылки текст «Скрыть» и измените ее на «Показать».
И, пожалуйста, не JQuery ...Как изменить класс и текст одного тега, нажав на другой тег?
document.getElementsByClassName("show")[0].onclick = function() {
var x = document.getElementsByClassName("hide")[0];
var y = document.getElementsByClassName("show")[0];
if (x.classList.contains("visible")) {
x.classList.remove("visible");
y.textContent = "Show";
} else {
closeOther();
x.classList.add("visible");
y.textContent = "Hide";
}
};
document.getElementsByClassName("show")[1].onclick = function() {
var x = document.getElementsByClassName("hide")[1];
var y = document.getElementsByClassName("show")[1];
if (x.classList.contains("visible")) {
x.classList.remove("visible");
y.textContent = "Show";
} else {
closeOther();
x.classList.add("visible");
y.textContent = "Hide";
}
};
document.getElementsByClassName("show")[2].onclick = function() {
var x = document.getElementsByClassName("hide")[2];
var y = document.getElementsByClassName("show")[2];
if (x.classList.contains("visible")) {
x.classList.remove("visible");
y.textContent = "Show";
} else {
closeOther();
x.classList.add("visible");
y.textContent = "Hide";
}
};
function closeOther() {
var visible = document.querySelectorAll(".visible"),
i, l = visible.length;
for (i = 0; i < l; ++i) {
visible[i].classList.remove("visible");
}
}
.style {
background-color: yellow;
width: 200px;
height: 200px;
display: inline-block;
}
.hide {
background-color: red;
width: 50px;
height: 50px;
display: none;
position: relative;
top: 50px;
left: 50px;
}
.hide.visible {
display: block;
}
<div class="style">
<a href="#" class="show">Show</a>
<div class="hide">
</div>
</div>
<div class="style">
<a href="#" class="show">Show</a>
<div class="hide">
</div>
</div>
<div class="style">
<a href="#" class="show">Show</a>
<div class="hide">
</div>
</div>
Возможный дубликат http://stackoverflow.com/questions/36162805/toggle-radio-input -using-css-only – LGSon
В приведенном выше сообщении есть несколько способов сделать это, используя только CSS – LGSon
Не дубликат, так как я занимаюсь javascript и хочу, чтобы сделать это только в js ... – mpasd