4 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以使用clickedElem.classList.toggle來切換類。
在此之前,您需要?jiǎng)h除除active當(dāng)前選定按鈕之外的類名,如下所示。
const myDemo = (event) => {
const clickedElem = event.target;
console.log(clickedElem);
const allBtns = document.querySelectorAll('.btn.light');
allBtns.forEach(btn => {
if (clickedElem != btn) {
btn.classList.remove('active');
}
});
clickedElem.classList.toggle('active');
}
.active {
background: red;
}
<button onclick="myDemo(event)" class="btn light">DOG</button>
<button onclick="myDemo(event)" class="btn light">DOG</button>
<button onclick="myDemo(event)" class="btn light">DOG</button>
<button onclick="myDemo(event)" class="btn light">DOG</button>
<button onclick="myDemo(event)" class="btn light">DOG</button>
<button onclick="myDemo(event)" class="btn light">DOG</button>
<button onclick="myDemo(event)" class="btn light">DOG</button>
<button onclick="myDemo(event)" class="btn light">DOG</button>
或者反過來,您可以存儲(chǔ)之前選擇的按鈕并使用它。
let previousClicked = null;
const myDemo = (event) => {
const clickedElem = event.target;
if (clickedElem === previousClicked) {
clickedElem.classList.remove('active');
return;
}
if (previousClicked != null) {
previousClicked.classList.remove('active');
}
clickedElem.classList.add('active');
previousClicked = clickedElem;
}
.active {
background: red;
}
<button onclick="myDemo(event)" class="btn light">DOG</button>
<button onclick="myDemo(event)" class="btn light">DOG</button>
<button onclick="myDemo(event)" class="btn light">DOG</button>
<button onclick="myDemo(event)" class="btn light">DOG</button>
<button onclick="myDemo(event)" class="btn light">DOG</button>
<button onclick="myDemo(event)" class="btn light">DOG</button>
<button onclick="myDemo(event)" class="btn light">DOG</button>
<button onclick="myDemo(event)" class="btn light">DOG</button>

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
從我在您的函數(shù)中看到的情況來看,您似乎還想active從頁面中的任何其他按鈕中刪除該類。這是我的方法:
let activeButton;
const selectButton = e => {
if (activeButton) {
activeButton.classList.remove('active');
}
if (activeButton === e.currentTarget) {
activeButton = null;
return;
}
e.currentTarget.classList.add('active');
activeButton = e.currentTarget;
};
這樣它就不必遍歷每個(gè)按鈕來停用它們,因?yàn)樗鼤?huì)跟蹤活動(dòng)按鈕。

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以嘗試在“myDemo”函數(shù)中使用內(nèi)置切換函數(shù)。不要使用 remove(),只需添加以下行:
btn.classList.toggle("active");

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
我建議使用classList.toggle().
const myDemo = (event) => {
const clickedElem = event.target;
const allBtns = document.querySelectorAll('.btn.light');
// remove the class from all buttons
allBtns.forEach(btn => btn.classList.remove('active'));
// reapply the class for the button that was clicked
clickedElem.classList.toggle('active');
}
.active {
background: red;
}
<button onclick="myDemo(event)" class="btn light">DOG</button>
<button onclick="myDemo(event)" class="btn light">DOG</button>
<button onclick="myDemo(event)" class="btn light">DOG</button>
添加回答
舉報(bào)