Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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 遍历jQuery数组_Javascript_Jquery_Loops - Fatal编程技术网

Javascript 遍历jQuery数组

Javascript 遍历jQuery数组,javascript,jquery,loops,Javascript,Jquery,Loops,我尝试遍历数组并将值分配给元素,如下所示: <tool>hammer</tool> var tools = ["screwdriver", "wrench", "saw"]; var i; for (i=0; i < tools.length; ++i){ $("tool").delay(300).fadeOut().delay(100).html(tools[i]).fadeIn(); }; 锤子 var工具=[“螺丝刀”、“扳手”、“锯”]; var i;

我尝试遍历数组并将值分配给元素,如下所示:

<tool>hammer</tool>

var tools = ["screwdriver", "wrench", "saw"];
var i;
for (i=0; i < tools.length; ++i){
$("tool").delay(300).fadeOut().delay(100).html(tools[i]).fadeIn();
};
锤子
var工具=[“螺丝刀”、“扳手”、“锯”];
var i;
对于(i=0;i
然而,这似乎不起作用,因为只有“saw”被指定为html值,并且不断淡入淡出

我在这里做错了什么?

在效果队列项目之间暂停,因此您的
.html()
会立即设置。因此,您只能看到
saw

一种解决方案是根据数组的长度取消
for
循环和“loop”,将
工具
文本设置为数组中的下一个第一项(当您删除它时)。但是,您需要在队列的上下文中执行此操作,因此可以使用
.fadeOut()
回调来执行此操作

将所有这些都封装在一个函数中(在这里,我立即调用它,但给它一个标签,
a
,这样它就可以被引用,它不是匿名的),并在最后将其传递给
.fadeIn()
,这样它将继续循环,直到数组为空为止

var tools = ["screwdriver", "wrench", "saw"];

(function a(){
    if (tools.length) {
        $("tool").delay(300).fadeOut(0, function(){
            $(this).html(tools.shift());
        }).delay(100).fadeIn(a);
    }
})();

所有延迟和淡入同时触发,用最后一个值覆盖所有内容only@adeneo工具是一个自定义html元素。知道了。所以,如果我把它们放在单独的行中,它会起作用吗?()@adeneo我如何连续解雇他们?@JaredFarrish谢谢!如果你把它作为答案,我会接受的!