我不知道如何描述這一點,而不會使它更復雜。
所以看看代碼的結果,點擊第一個鏈接的「顯示」,然後第二個和第三個。
當第二個鏈接被點擊時,第一個關閉,但文本仍然是「隱藏」,我希望它更改爲「顯示」。
因此,點擊鏈接時,檢測是否有其他鏈接有文本「隱藏」,並將其更改爲「顯示」。
並請沒有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