【发布时间】: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