Javascript 有没有更有效的方法来编写这个包含图标的函数?

Javascript 有没有更有效的方法来编写这个包含图标的函数?,javascript,Javascript,我有一个小小的功能,点击一个按钮就可以将图标从“V形向下”更改为“V形向下”。我觉得有一种更有效的方法来编写下面的函数: const moveChevron = () => { if (chevron.classList.contains("fa-chevron-down")) { chevron.classList.remove("fa-chevron-down"); chevron.classList.add(&

我有一个小小的功能,点击一个按钮就可以将图标从“V形向下”更改为“V形向下”。我觉得有一种更有效的方法来编写下面的函数:

 const moveChevron = () => {
    if (chevron.classList.contains("fa-chevron-down")) {
      chevron.classList.remove("fa-chevron-down");
      chevron.classList.add("fa-chevron-up");
    } else if (chevron.classList.contains("fa-chevron-up")) {
      chevron.classList.remove("fa-chevron-up");
      chevron.classList.add("fa-chevron-down");
    }
  };

searchCheck.addEventListener('click', moveChevron);
有没有办法简化此过程?

可以这样缩短功能:

const moveChevron = () => {
    chevron.classList.toggle("fa-chevron-up");
    chevron.classList.toggle("fa-chevron-down");
};
可以这样缩短功能:

const moveChevron = () => {
    chevron.classList.toggle("fa-chevron-up");
    chevron.classList.toggle("fa-chevron-down");
};
您可以切换类(如果类处于“关闭”状态,则将其设置为“打开”并向后):

const moveChevron=()=>{
chevron.classList.toggle(“fa-chevron-down”);
chevron.classList.toggle(“fa chevron up”);
};
当然,在执行此操作之前,元素必须在默认情况下设置一个或另一个类:

您可以切换类(如果类处于“关闭”状态,则将其“打开”并向后切换):

const moveChevron=()=>{
chevron.classList.toggle(“fa-chevron-down”);
chevron.classList.toggle(“fa chevron up”);
};
当然,在执行此操作之前,元素必须在默认情况下设置一个或另一个类:

类列表有一个方法,可以用几种不同的方式应用。单独地,您可以通过切换两个类来完成此操作:

const moveChevron=()=>{
chevron.classList.toggle(“fa-chevron-down”);
chevron.classList.toggle(“fa chevron up”);
};
但是,除了切换类之外,您可能还希望基于这种状态实现一些行为。在这种情况下,您必须选择要保留状态的位置。可能在类中,利用
切换的返回值(根据切换后是否存在类的布尔值)?可能在变量中:

//根据V形符号的含义命名
让isFoo=true;
const moveChevron=()=>{
isFoo=!isFoo;
//选择!isFoo或isFoo以获得最佳可读性
chevron.classList.toggle(“fa chevron down”,!isFoo);
chevron.classList.toggle(“fa chevron up”,isFoo);
};
或者最好的是,在浏览器知道如何使用的控件中。一个可切换的控件是一个复选框,很可能您应该在某个地方使用它。也许
searchCheck
已经是一个复选框了——它的名字有点暗示了这一点。在这种情况下,正确的事件是“更改”,并且状态处于其
选中的
属性中,不要单独跟踪它:

const moveChevron=()=>{
var isFoo=searchCheck.checked;
chevron.classList.toggle(“fa chevron down”,!isFoo);
chevron.classList.toggle(“fa chevron up”,isFoo);
};
您甚至可以使用
:checked
,在CSS中实现上述功能,完全避免使用JavaScript。

类列表中有一种方法,可以以几种不同的方式应用。单独地,您可以通过切换两个类来完成此操作:

const moveChevron=()=>{
chevron.classList.toggle(“fa-chevron-down”);
chevron.classList.toggle(“fa chevron up”);
};
但是,除了切换类之外,您可能还希望基于这种状态实现一些行为。在这种情况下,您必须选择要保留状态的位置。可能在类中,利用
切换的返回值(根据切换后是否存在类的布尔值)?可能在变量中:

//根据V形符号的含义命名
让isFoo=true;
const moveChevron=()=>{
isFoo=!isFoo;
//选择!isFoo或isFoo以获得最佳可读性
chevron.classList.toggle(“fa chevron down”,!isFoo);
chevron.classList.toggle(“fa chevron up”,isFoo);
};
或者最好的是,在浏览器知道如何使用的控件中。一个可切换的控件是一个复选框,很可能您应该在某个地方使用它。也许
searchCheck
已经是一个复选框了——它的名字有点暗示了这一点。在这种情况下,正确的事件是“更改”,并且状态处于其
选中的
属性中,不要单独跟踪它:

const moveChevron=()=>{
var isFoo=searchCheck.checked;
chevron.classList.toggle(“fa chevron down”,!isFoo);
chevron.classList.toggle(“fa chevron up”,isFoo);
};

您甚至可以使用
:checked
在CSS中实现上述功能,完全避免使用JavaScript。

您可以使用toggle方法代替单独的添加/删除方法。

let chevron=document.getElementById(“chevron”);
让searchCheck=document.getElementById(“searchCheck”);
const moveChevron=()=>{
if(V形.classList.contains(“fa V形向下”)){
chevron.classList.toggle(“fa chevron up”);
}else if(chevron.classList.contains(“fa chevron up”)){
chevron.classList.toggle(“fa-chevron-down”);
}
};
searchCheck.addEventListener('click',moveChevron)
#搜索检查{
填充:10px 20px;
边界:0;
背景色:#333;
颜色:#fff;
边界半径:3px;
光标:指针;
}
#V形{
填充:8px;
背景色:#f90;
颜色:白色;
字体大小:20px;
边界半径:3px;
}

文件
更改图标

您可以使用切换方法代替单独的添加/删除方法。

let chevron=document.getElementById(“chevron”);
让searchCheck=document.getElementById(“searchCheck”);
const moveChevron=()=>{
if(V形.classList.contains(“fa V形向下”)){
chevron.classList.toggle(“fa chevron up”);
}else if(chevron.classList.contains(“fa chevron up”)){
chevron.classList.toggle(“fa-chevron-down”);
}
};
searchCheck.addEventListener('click',moveChevron)
#搜索检查{
填充:10px 20px;
边界:0;
背景色:#333;
颜色:#fff;
边界半径:3px;
光标:指针;
}
#V形{
填充:8px;
背景色:#f90