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谢谢!如果你把它作为答案,我会接受的!