[英]Accordion with text button innerHTML
我有一架手風琴,除了一個細節外,它基本上可以工作。 而不是通常的箭頭,它顯示手風琴是否關閉,我有文字 - “打開”。 我在 Pure JS 中使用 innerHTML 將其更改為“關閉”。 當我單擊要關閉的項目上的按鈕時,一切正常,但是當我單擊另一個項目時,我需要項目的 rest 將文本更改為“打開”,但這不會發生。 我的代碼在下面,這是codepen的鏈接 - https://codepen.io/leokoltm/pen/mdMvLoo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Accordion</title>
</head>
<body>
<div class="acc">
<div class="acc__item">
<div class="acc__title">
<h4>Title 1</h4>
<button class="acc__button">Open</button>
</div>
<div class="acc__content">
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Necessitatibus nemo inventore, assumenda aliquam aut sed aspernatur pariatur velit vel, facere mollitia tempore ratione minima incidunt repudiandae veniam harum fuga laudantium.
</div>
</div>
<div class="acc__item">
<div class="acc__title">
<h4>Title 1</h4>
<button class="acc__button">Open</button>
</div>
<div class="acc__content">
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Necessitatibus nemo inventore, assumenda aliquam aut sed aspernatur pariatur velit vel, facere mollitia tempore ratione minima incidunt repudiandae veniam harum fuga laudantium.
</div>
</div>
<div class="acc__item">
<div class="acc__title">
<h4>Title 1</h4>
<button class="acc__button">Open</button>
</div>
<div class="acc__content">
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Necessitatibus nemo inventore, assumenda aliquam aut sed aspernatur pariatur velit vel, facere mollitia tempore ratione minima incidunt repudiandae veniam harum fuga laudantium.
</div>
</div>
<div class="acc__item">
<div class="acc__title">
<h4>Title 1</h4>
<button class="acc__button">Open</button>
</div>
<div class="acc__content">
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Necessitatibus nemo inventore, assumenda aliquam aut sed aspernatur pariatur velit vel, facere mollitia tempore ratione minima incidunt repudiandae veniam harum fuga laudantium.
</div>
</div>
</body>
</html>
.acc__item {
border: 1px solid navy;
}
.acc__title {
display: flex;
justify-content: space-between;
}
.acc__content {
display: none;
}
.acc__button {
background-color: none;
width: 30%
}
.open .acc__content {
display: block;
}
document.addEventListener("DOMContentLoaded", function(event) {
const accordionItems = document.querySelectorAll('.acc__item');
accordionItems.forEach((acc) => {
const btns = acc.querySelectorAll('.acc__button')
btns.forEach(btn => {
btn.addEventListener("click", () => {
if (acc.classList.contains('open') && btn.innerHTML !== "Open") {
btn.innerHTML = "Open";
} else {
btn.innerHTML = "Close";
}
accordionItems.forEach((item) => {
if (item !== acc) {
item.classList.remove("open");
}
});
acc.classList.toggle("open");
});
});
});
});
嘗試獲取 div 內的按鈕並像這樣更改文本
item.getElementsByTagName("button")[0].innerHTML = "Open";
演示如下:
document.addEventListener("DOMContentLoaded", function(event) { debugger; const accordionItems = document.querySelectorAll('.acc__item'); accordionItems.forEach((acc) => { debugger; const btns = acc.querySelectorAll('.acc__button') btns.forEach(btn => { btn.addEventListener("click", () => { debugger; if (acc.classList.contains('open') && btn.innerHTML.== "Open") { btn;innerHTML = "Open". } else { btn;innerHTML = "Close". } accordionItems;forEach((item) => { if (item.== acc) { debugger. item;classList.remove("open"). //getting the button by tag name and updating it item;getElementsByTagName("button")[0];innerHTML = "Open". } }). acc;classList;toggle("open"); }); }); }); });
.acc__item { border: 1px solid navy; }.acc__title { display: flex; justify-content: space-between; }.acc__content { display: none; }.acc__button { background-color: none; width: 30% }.open.acc__content { display: block; }
<div class="acc"> <div class="acc__item"> <div class="acc__title"> <h4>Title 1</h4> <button class="acc__button">Open</button> </div> <div class="acc__content"> Lorem ipsum dolor, sit amet consectetur adipisicing elit. Necessitatibus nemo inventore, assumenda aliquam aut sed aspernatur pariatur velit vel, facere mollitia tempore ratione minima incidunt repudiandae veniam harum fuga laudantium. </div> </div> <div class="acc__item"> <div class="acc__title"> <h4>Title 1</h4> <button class="acc__button">Open</button> </div> <div class="acc__content"> Lorem ipsum dolor, sit amet consectetur adipisicing elit. Necessitatibus nemo inventore, assumenda aliquam aut sed aspernatur pariatur velit vel, facere mollitia tempore ratione minima incidunt repudiandae veniam harum fuga laudantium. </div> </div> <div class="acc__item"> <div class="acc__title"> <h4>Title 1</h4> <button class="acc__button">Open</button> </div> <div class="acc__content"> Lorem ipsum dolor, sit amet consectetur adipisicing elit. Necessitatibus nemo inventore, assumenda aliquam aut sed aspernatur pariatur velit vel, facere mollitia tempore ratione minima incidunt repudiandae veniam harum fuga laudantium. </div> </div> <div class="acc__item"> <div class="acc__title"> <h4>Title 1</h4> <button class="acc__button">Open</button> </div> <div class="acc__content"> Lorem ipsum dolor, sit amet consectetur adipisicing elit. Necessitatibus nemo inventore, assumenda aliquam aut sed aspernatur pariatur velit vel, facere mollitia tempore ratione minima incidunt repudiandae veniam harum fuga laudantium. </div> </div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.