【发布时间】:2021-12-15 08:49:27
【问题描述】:
从 JavaScript 开始,我编写了一个小脚本,在单击时向元素添加一个类,然后当且仅当另一个元素被单击时才删除该类。
我试图尊重 DRY,所以我知道我应该写一个函数来避免重复代码,例如:
function ToggleClass(element) {
if (FacebookConst.classList.contains("link-ranking-active") || GoogleConst.classList.contains("link-ranking-active") || ComparisonConst.classList.contains("link-ranking-active") {
//remove "link-ranking-active" class to all constants **BUT** of element
};
};
但我不知道语法。
这是我的代码:
const GoogleConst = document.getElementById('Google');
const FacebookConst = document.getElementById('Facebook');
const ComparisonConst = document.getElementById('Comparison');
const Page = document.getElementById("result");
GoogleConst.addEventListener("click", e => {
GoogleConst.classList.add("link-ranking-active");
if (FacebookConst.classList.contains("link-ranking-active") || ComparisonConst.classList.contains("link-ranking-active")) {
FacebookConst.classList.remove("link-ranking-active");
ComparisonConst.classList.remove("link-ranking-active");
};
});
FacebookConst.addEventListener("click", e => {
FacebookConst.classList.add("link-ranking-active");
if (GoogleConst.classList.contains("link-ranking-active") || ComparisonConst.classList.contains("link-ranking-active")) {
GoogleConst.classList.remove("link-ranking-active");
ComparisonConst.classList.remove("link-ranking-active");
};
});
ComparisonConst.addEventListener("click", e => {
ComparisonConst.classList.add("link-ranking-active");
if (FacebookConst.classList.contains("link-ranking-active") || GoogleConst.classList.contains("link-ranking-active")) {
FacebookConst.classList.remove("link-ranking-active");
GoogleConst.classList.remove("link-ranking-active");
};
});
.link-ranking-active{
box-sizing: border-box;
position:relative;
padding: 0.3em;
height: 100%;
width: 100%;
border-radius: 0.3em;
border: 0.15em solid #48ffd5;
}
<div class="page">
<div class="ranking" id="ranking">
<ul class="ul-menu">
<li class="li-menu"><a class="link-ranking" id="Google" href="#key">Google</a></li>
<li class="li-menu"><a class="link-ranking" id="Facebook" href="#key">Facebook</a></li>
<li class="li-menu"><a class="link-ranking" id="Comparison" href="#key">Comparison</a></li>
</ul>
</div>
</div>
【问题讨论】:
标签: javascript html css function class