传递给函数时,Javascript,Array不再是数组

时间:2016-05-03 17:03:47

标签: javascript jquery arrays

我正在尝试编写一个显示一系列客户评价的脚本,按顺序切换每个客户评价的可见性。我正在尝试使用队列来执行此操作,并被告知使用常规Javascript数组,该数组具有启用队列功能的方法push()shift()。但是,当我尝试将数组传递给我写的函数时,我收到了这个错误:

TypeError: q.shift is not a function

所以,不知何故,我传入函数的数组不再是某个数组。可以通过Javascript更有经验的人解释为什么会发生这种情况吗?

代码:

function testimonials(q) {
       var e = q.shift();

       jQuery(e).fadeToggle("slow", testimonials(q.push(e)));

}

jQuery(document).ready(function() {

    var elements = jQuery(".fade-text").toArray();

    var queue = [];

    // add to queue
    for (i = 0; i  < elements.length; i++) {
        queue.push(elements[i]);
    }

    testimonials(queue);
});

2 个答案:

答案 0 :(得分:5)

以下是问题testimonials(q.push(e))push的返回值是一个数字,并且没有名为shift()的方法。

 jQuery(e).fadeToggle("slow",function(){ testimonials((q.push(e), q)) });

此外,您没有正确使用fadeToggle callBack ,您正在立即调用函数testimonials。将该函数调用包装在匿名函数中并将其作为callBack传递。

答案 1 :(得分:0)

试试这个

jQuery(e).fadeToggle("slow",function(){ testimonials((q.push(e), q)) });