我正在尝试编写一个显示一系列客户评价的脚本,按顺序切换每个客户评价的可见性。我正在尝试使用队列来执行此操作,并被告知使用常规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);
});
答案 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)) });