[英]Remove ACTIVE classes from all other buttons when I click an other button in vanilla javascript
[英]Javascript is adding active class but not remove when click other button
function grid_view() { grid_view_result(); grid_view_button(); } function grid_view_active() { if (document.getElementById("grid_view").className == "fa fa-th-large ml-5") { document.getElementById("grid_view").className = "fa fa-th-large ml-5 active"; } } function grid_view_inactive() { if (document.getElementById("grid_view").className == "fa fa-th-large ml-5 active") { document.getElementById("grid_view").className = "fa fa-th-large ml-5"; } } function grid_view_button() { if (document.getElementById("cooking_result").className == "recipes grid") { grid_view_active(); return; } if (document.getElementById("cooking_result").className = "recipes list") { grid_view_inactive(); return; } } function grid_view_result() { if (document.getElementById("cooking_result").className == "recipes list") { document.getElementById("cooking_result").className = "recipes grid"; } } function list_view() { list_view_result(); list_view_button(); } function list_view_active() { if (document.getElementById("list_view").className == "fa fa-th-list ml-5") { document.getElementById("list_view").className = "fa fa-th-list ml-5 active"; } } function list_view_inactive() { if (document.getElementById("list_view").className == "fa fa-th-list ml-5 active") { document.getElementById("list_view").className = "fa fa-th-list ml-5"; } } function list_view_button() { if (document.getElementById("cooking_result").className == "recipes list") { list_view_active(); return; } if (document.getElementById("cooking_result").className = "recipes grid") { list_view_inactive(); return; } } function list_view_result() { if (document.getElementById("cooking_result").className == "recipes grid") { document.getElementById("cooking_result").className = "recipes list"; } }
.active{text-decoration:underline;} .recipes.grid li{float:left;width:50%;height:50px;background:red;} .recipes li:nth-child(2){background:blue !important;} .recipes.list li{float:left;width:100%;height:50px;background:red;}
<i id="grid_view" onclick="grid_view();" class="fa fa-th-large ml-5">Grid</i> <i id="list_view" onclick="list_view();" class="fa fa-th-list ml-5">List</i> <ul id="cooking_result" class="recipes grid"> <li></li> <li></li> </ul>
我可以將class =“ active”添加到i標簽,但是單擊其他i標簽時無法刪除。 你能幫我解決嗎? 另外,如果可能,您可以簡化為javascript嗎? 我認為此功能太長了:)
這是一個整理好的解決方案。
我所做的主要更改:
classList.toggle
解決了underline
消失/重新出現的問題; .js
。 pointer:
.js
事件,並使該.js
不引人注目 如果您有任何不清楚的地方,請在下面的評論中提問。
var gridView = document.getElementById("grid_view"); var listView = document.getElementById("list_view"); function grid_view() { var cookingResult = document.getElementById("cooking_result"); var gridView = document.getElementById("grid_view"); var listView = document.getElementById("list_view"); if (cookingResult.className === "recipes list") { cookingResult.className = "recipes grid"; gridView.classList.toggle('active'); listView.classList.toggle('active'); } } function list_view() { var cookingResult = document.getElementById("cooking_result"); var gridView = document.getElementById("grid_view"); var listView = document.getElementById("list_view"); if (cookingResult.className === "recipes grid") { cookingResult.className = "recipes list"; gridView.classList.toggle('active'); listView.classList.toggle('active'); } } gridView.addEventListener('click',grid_view,false); listView.addEventListener('click',list_view,false);
.active { text-decoration: underline; } .recipes.grid li { float: left; width: 50%; height: 50px; background: red; } .recipes.list li { float: left; width: 100%; height: 50px; background: red; } .recipes li:nth-of-type(2) { background: blue; } #grid_view, #list_view { cursor: pointer; } #grid_view.active, #list_view.active { cursor: text; }
<i id="grid_view" class="fa fa-th-large ml-5 active">Grid</i> <i id="list_view" class="fa fa-th-list ml-5">List</i> <ul id="cooking_result" class="recipes grid"> <li></li> <li></li> </ul>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.