在jquery中使用数组变量和for循环

时间:2016-01-08 01:58:51

标签: javascript jquery

$(document).ready(function(){
    var ar = ["#mob","#tv","#cmp","#prt"]; //div id's to display images
    $(".show").click(function(){
        for(var sh in ar){
            $(sh).css({"display":"block"});
        }
    },5000); 
});

我试图在按钮点击时显示图像,延迟时间为5000,点击事件按钮没有发生任何事情。

3 个答案:

答案 0 :(得分:0)

当你运行的时候用javascript到j的远程循环(var sh in arr)sh将从0开始到3。这意味着你的代码应该是$(arr[sh]).css({"display": block});

答案 1 :(得分:0)

将显示div的代码放在函数上。我们调用函数showFcn()

<强> showFcn()

 var ar = ["#mob", "#tv", "#cmp", "#prt"]; //div id's to display images
  for (var sh in ar) {
    $(ar[sh]).show();
  }
 }

顺便说一下你的sh返回一个基数为零的整数,所以只需用ar[sh]

调用数组元素

在您的按钮click()中调用showFcn()并使用setTimeout()添加延迟。

点击()

$('#show').click(function() {
  setTimeout(showFcn, 5000);
})

这是jsfiddle给你的。

答案 2 :(得分:0)

1。)在show()之前更喜欢css(“display”,“block”)。 jQuery show()有一些讨厌的部分。

和一些代码:

$(document).ready(function(){
    var ar = ["#mob","#tv","#cmp","#prt"], timeouts;

    function showElement(){ this.css("display", "block") }
    $(".show").click(function(){
        timeouts = $(ar).map(function(index, id){
            timeouts && clearTimeout(timeouts[index]);
            return setTimeout(showElement.bind($(id)), 5000*index);
        })
    })
});