Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用函数获取ElementsByclassName的更智能的方法_Javascript_Css_Function_Getelementsbyclassname - Fatal编程技术网

Javascript 使用函数获取ElementsByclassName的更智能的方法

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

我想知道在javascript和css之间是否有更聪明的方法来处理类。据我所知,选择具有相同类的所有元素的“唯一”/最常见的方法是创建for循环:


同学们好
同学们好
二班你好
二班你好

您可以实现
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");