Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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 存储一个函数的结果,该函数在我的类中循环不起作用_Javascript - Fatal编程技术网

Javascript 存储一个函数的结果,该函数在我的类中循环不起作用

Javascript 存储一个函数的结果,该函数在我的类中循环不起作用,javascript,Javascript,每当我创建这样的函数并直接运行该函数时,它都会工作,但是为什么我不能存储我的类循环调用呢?我想存储它找到的元素,但它保持返回NULL。这应该与jquery的var x=$('.foo') 原因可能是什么 function classLoop (elem){ for (var i = 0; i < elem.length; i++) { elem[i]; }; } var x = document.getElementsByClassName('foo');

每当我创建这样的函数并直接运行该函数时,它都会工作,但是为什么我不能存储我的类循环调用呢?我想存储它找到的元素,但它保持返回NULL。这应该与jquery的
var x=$('.foo')

原因可能是什么

 function classLoop (elem){
    for (var i = 0; i < elem.length; i++) {
        elem[i];
    };
}
var x = document.getElementsByClassName('foo');
var items = classLoop(x);
console.log(items)
函数类循环(elem){
对于(变量i=0;i


编辑:很抱歉,我想为你们快速更新此文件,但忘了添加“document.”部分。

它不会返回null,而是返回
未定义的
(确切地说),因为您从未从方法中实际返回任何内容。您可以使用
return
关键字执行此操作

function myFunc(){
    return "Hello World"
}
除此之外,您的方法并没有实现您认为它将要实现的功能。您传递字符串
foo
,我可以从您的小提琴中看到,您有一个带有该类的元素,但是您正在迭代文本字符串“foo”,而不是带有类“foo”的元素

我想也许你想做的是类似于

function classLoop (elem){
    var elements = document.getElementsByClassName(elem)
    var arr = [];
    for (var i = 0; i < elements.length; i++) {
        arr.push(elements[i])
    };
    return arr;
}

这显然是毫无意义的-但我不知道您试图做什么,上面演示了一些想法。

您必须使用
document.getElementsByClassName

  function classLoop (elem){


         var count=[];
    var element=document.getElementsByClassName(elem);
            for (var i = 0; i <  element.length; i++) {
                count.push(element[0])
            };
            return count
        }

        var items = classLoop('foo');
    console.log(items)
函数类循环(elem){
var计数=[];
var元素=document.getElementsByClassName(elem);
对于(变量i=0;i
您返回的是什么?没有什么。它应该是未定义且不为空的。您可能需要,或者只需查看@epascarello edited。很抱歉,忘记将实际元素输入到loopSo,现在更新的fiddle工作了-该方法应该做什么?只需在传入时返回相同的列表即可。抱歉,忘记输入实际元素以循环编辑我的问题。我忘了在示例代码中添加一些内容。document.getElementsByClassName返回一个html集合,我无法真正操作它,所以我需要首先循环遍历它们。直到现在我才知道推送有任何用处:)我不知道你的方法在做什么,所以这是我目前能做的最好的方法。然后查找
queryselector all
-不要自己写这个!编辑。很抱歉,忘记将实际元素输入到loopcalling
文档中。重复getElementsByClassName
是个坏主意。它将每次迭代称为循环控制的一部分,并在每次迭代中再次调用。这是该类名页面上每个元素的两次:|@user1386579我们不应该先将内容存储在变量中吗?你没有缓存数据element@Asperger我看不出在函数外部或内部涂鸦有什么意义
  function classLoop (elem){


         var count=[];
    var element=document.getElementsByClassName(elem);
            for (var i = 0; i <  element.length; i++) {
                count.push(element[0])
            };
            return count
        }

        var items = classLoop('foo');
    console.log(items)