根据数组的元素调用函数

Call a function according to the elements of an array

本文关键字:调用 函数 元素 数组      更新时间:2023-09-26

我是JavaScript和jQuery的初学者,我想知道如何处理这部分代码

我有一个带有回调的函数,例如:

myFunc(elem, callback) {
    $(elem).fadeIn(function(){ callback(); });
}

我想为数组中的元素运行这个函数:

elems = ['#elem1', '#elem2_3', '#elem4_5', '#elem3', '#elem_five'];

但是,我想通过回调一个接一个地为数组的每个元素执行这个函数。一旦#elem1具有衰落因子,它就必须衰落第二个元素。。etc

现在我这样进行:

我试过做一个for循环,但它们是在同一时间执行的。

for (i = 0; i < elems.length; i++) { 
    myFunc(elem[i], function(){
        if (elem[i+1]) {
            myFunc(elem[i+1]);
        }
    });
}

那么你将如何进行呢?

这样做,问题的递归解决方案,

function myFunc(elems, cnt)
{
   if(cnt > (elems.length - 1)) { return; }
   $(elems[cnt]).fadeIn("slow", function(){  myFunc(elems , ++cnt); });
}
myFunc(['#elem1', '#elem2_3', '#elem4_5', '#elem3', '#elem_five'], 0);

演示

链接更新:http://jsfiddle.net/kuw6tt92/1/

function fadeIn(selectors) {
    var elements = Array.prototype.slice.call($(selectors));
    function fade() {
        jQuery(elements.shift()).fadeIn("slow", fade);
    }
    fade();
}
fadeIn("div");

尝试

 var elems = ['#elem1', '#elem2_3', '#elem4_5', '#elem3', '#elem_five'];
    var len = elems.length;
    function myFunc(index) {
        $(elems[index]).fadeIn(function () {
            if (len > ++index) myFunc(index);
            return;
        });
    }
    myFunc(0);

演示