【问题标题】:How to improve my add class to element functions [closed]如何改进我的添加类到元素功能[关闭]
【发布时间】:2022-01-25 09:35:55
【问题描述】:

我想编写一个类似于 jQuery 的 addClass() 函数的 vanilla js 函数。我已经写了下面的代码。

function checkType(value){ //get type of target
    var name = "";
    var type = value.split("");
    for(var i=1; i<type.length; i++){
        name = name + type[i];
    }
    if(type[0] == "#"){ //if id
        return document.getElementById(name);   //return id
    }else if(type[0] == "."){ //if class
        return document.getElementsByClassName(name); //return class
    }else{
        return null;
    }
}

function classesToArray(value){ 
    if(value != null){
        value = value.split(" ");
        return value;
    }
    return [];
}

function addClass(target, value) {
    var element = checkType(target);
    var classes = classesToArray(value);
    if(element != null){
        classes.forEach(function(classItem){
            if(element.length){
                for(var i = 0; i < element.length; i++){
                    element[i].className += " " + classItem;
                }
            }else{
                element.className += " " + classItem;
            }
        });
    }
}

所以使用方法如下

addClass('.elementIdName','nameOfClassToAdd');    //target Id if begin with .
addClass('#elementClassName','nameOfClassToAdd'); //target className if begin with #

addClass('.elementIdName', 'nameOfClass1 nameOfClass2'); //you can also add multiple class names

代码有效。但我知道还有很大的改进空间。如果有人能告诉我我应该寻找什么来改进这一点,我将非常感激。谢谢

【问题讨论】:

  • 代码改进请求应发送至Code Review。 SO 用于非工作代码。

标签: javascript jquery


【解决方案1】:

无需自己编写addClass函数。

你可以用这个:

let el = document.querySelector("#your_element_id");
if(el) {
   el.classList.add("your class name");
}

来源:https://developer.mozilla.org/en-US/docs/Web/API/Element/classList

【讨论】:

  • 但考虑到 classList 与 IE 9 及更低版本不兼容,这样做的目的是处理后备浏览器
  • @shrayder 在这个时代试图支持 IE9 及更低版本是愚蠢的。甚至微软多年来也没有支持 IE9。您将使用各种 polyfill 使您的代码库膨胀,以支持极少数可能的用户。只需做一些简单的特征检测并告诉用户使用更现代的浏览器。 IE9 也是最后一个支持使用 IE 特殊 cmets 的版本,因此您只能在这些 cmets 中插入元素,并且它们只会以您想要的任何版本显示
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-02
  • 1970-01-01
  • 1970-01-01
  • 2015-09-26
  • 2012-05-25
  • 1970-01-01
  • 2015-10-30
相关资源
最近更新 更多