Javascript 使用函数获取ElementsByclassName的更智能的方法
我想知道在javascript和css之间是否有更聪明的方法来处理类。据我所知,选择具有相同类的所有元素的“唯一”/最常见的方法是创建for循环:Javascript 使用函数获取ElementsByclassName的更智能的方法,javascript,css,function,getelementsbyclassname,Javascript,Css,Function,Getelementsbyclassname,我想知道在javascript和css之间是否有更聪明的方法来处理类。据我所知,选择具有相同类的所有元素的“唯一”/最常见的方法是创建for循环: 同学们好 同学们好 二班你好 二班你好 您可以实现map函数进行迭代。map函数迭代数组中的元素。 因此,这里您需要首先使用array.from()方法将普通对象更改为数组 var elems; function getClass(getClassfuncCont) { return document.getElementsByClass
同学们好
同学们好
二班你好
二班你好
您可以实现map
函数进行迭代。map
函数迭代数组中的元素。
因此,这里您需要首先使用array.from()
方法将普通对象更改为数组
var elems;
function getClass(getClassfuncCont) {
return document.getElementsByClassName(getClassfuncCont);
}
elems = getClass("helloClass");
Array.from(elems).map(element=>element.style.background = "red");
请参考工作片段
var元素;
函数getClass(getClassfuncCont){
返回单据.getElementsByClassName(getClassfuncCont);
}
elems=getClass(“helloClass”);
Array.from(elems.map)(element=>element.style.background=“红色”)代码>
同学们好
同学们好
同学们好
正如其中一条注释中提到的,当您应该将它作为变量传递时,您正在将getClassName
作为字符串传递。去掉双引号应该可以让它起作用
但是,您将无法按现在的方式修改style属性,因为您的函数不返回元素。如果您试图根据类名批量更改背景颜色,我建议添加颜色名称作为第二个变量:
//renaming the function so it's more representative
function colorBackgroundByClass(getClassName,color) {
var elems = document.getElementsByClassName(getClassName);
for (var i = 0; i < elems.length; i++) {
elems[i].style.background = color;
}
}
colorBackgroundByClass("helloClass","red");
colorBackgroundByClass("helloClassTwo","blue");
//重命名函数以使其更具代表性
函数colorBackgroundByClass(getClassName,color){
var elems=document.getElementsByClassName(getClassName);
对于(变量i=0;i
您将getClassName
作为带引号的字符串传递,而不是传递给函数的参数。把那些双引号拿走,我想你会很乐意去的。如果您还没有使用jQuery,也可以查看它!你认为更聪明吗?@卡梅伦Hurd OK,是的,我可以看到编辑器中的ClaskNeue变成蓝色。但是代码似乎仍然不起作用:[link]@Tushar是的,这肯定比for循环聪明得多。非常感谢。但它仍然无法解决将选择器放入函数中的问题。我想做的是为用javascript选择类的问题创建一个更不重复的解决方案。感谢atnatn,您如何使它更灵活,以便您可以将它用于任何样式属性?因此,在gennel中选择类的方法比较枯燥。实际上,我认为可以将函数作为第二个变量传递,比如function getClass(getClassName,modifyFunction)
,然后在函数modifyFunction(elems[i])
中运行它,然后可以调用getClass(“helloClass”,function(param){param.style.background=“red”;})
谢谢@Dhirak,我实在想不出这是否是一种用JavaScript选择类的更为枯燥的方法?似乎每次需要选择类时都必须重复所有这些:code
elems=getClass(“helloClass”);Array.from(elems).map(element=>element.style.background=“red”);
var elems;
function getClass(getClassfuncCont) {
return document.getElementsByClassName(getClassfuncCont);
}
elems = getClass("helloClass");
Array.from(elems).map(element=>element.style.background = "red");
//renaming the function so it's more representative
function colorBackgroundByClass(getClassName,color) {
var elems = document.getElementsByClassName(getClassName);
for (var i = 0; i < elems.length; i++) {
elems[i].style.background = color;
}
}
colorBackgroundByClass("helloClass","red");
colorBackgroundByClass("helloClassTwo","blue");